教做粥的网站,页面跳转的方法,django网站开发视频教程,南昌公司做网站之前的文章我们介绍了一下 Xpath 模块#xff0c;接下来我们就利用 Xpath 模块爬取《糗事百科》的糗事。之前我们已经利用 re 模块爬取过一次糗百#xff0c;我们只需要在其基础上做一些修改就可以了#xff0c;为了保证项目的完整性#xff0c;我们重新再来一遍。我们通过…之前的文章我们介绍了一下 Xpath 模块接下来我们就利用 Xpath 模块爬取《糗事百科》的糗事。之前我们已经利用 re 模块爬取过一次糗百我们只需要在其基础上做一些修改就可以了为了保证项目的完整性我们重新再来一遍。我们通过 Xpath Helper 的谷歌插件经过分析获取到我们想要的内容为 //div[classcontent]/span[1]然后我们就可以通过 text() 来获取里面的内容了 //div[classcontent]/span[1]/text()1 importurllib.request2 from lxml importetree3 importssl45 #取消代理验证6 ssl._create_default_https_context ssl._create_unverified_context78 url https://www.qiushibaike.com/text/page/1/9 #User-Agent头10 user_agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.3611 headers {User-Agent: user_agent}12 req urllib.request.Request(url, headersheaders)13 response urllib.request.urlopen(req)14 #获取每页的HTML源码字符串15 html response.read().decode(utf-8)16 #解析html 为 HTML 文档17 selector etree.HTML(html)18 content_list selector.xpath(//div[classcontent]/span[1]/text())19 print(content_list)输出结果为从上面的输出结果可以看出我们已经拿到了我们想要的数据并且是一个列表类型我们对列表进行操作扥别拿到糗事再存储到本地即可。1 for item initem_list:2 item item.replace(\n, )3 self.writePage(item)上面的代码中 item_list 即为我们上面所获取到的 content_list 列表在之前通过 re 模块获取数据时通过对列表的内容分析我们发现有 查看全文\n 等多余内容而通过 Xpath 只有 \n 为多余我们通过 replace 方法将其转为空剩下的就是我们想要的内容了接下来就是存储到本地即可了。上面就可以实现一个获取 糗事百科 的糗事的简单爬虫但是只能爬取单个页面的内容通过分析 url 我们发现 https://www.qiushibaike.com/text/page/1/ 中最后的 1 即为页码我们就可以根据这个页码逐一爬取更多页面的内容最终的代码如下1 importurllib.request2 from lxml importetree3 importssl45 #取消代理验证6 ssl._create_default_https_context ssl._create_unverified_context789 classSpider:10 def __init__(self):11 #初始化起始页位置12 self.page 113 #爬取开关如果为True继续爬取14 self.switch True1516 defloadPage(self):17 18 作用打开页面19 20 url https://www.qiushibaike.com/text/page/ str(self.page) /21 #User-Agent头22 user_agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.3623 headers {User-Agent: user_agent}24 req urllib.request.Request(url, headersheaders)25 response urllib.request.urlopen(req)26 #获取每页的HTML源码字符串27 html response.read().decode(utf-8)28 #解析html 为 HTML 文档29 selector etree.HTML(html)30 content_list selector.xpath(//div[classcontent]/span[1]/text())31 #调用dealPage() 处理糗事里的杂七杂八32 self.dealPage(content_list)3334 defdealPage(self, item_list):35 36 brief 处理得到的糗事列表37 param item_list 得到的糗事列表38 param page 处理第几页39 40 for item initem_list:41 item item.replace(\n, )42 self.writePage(item)4344 defwritePage(self, text):45 46 brief 将数据追加写进文件中47 param text 文件内容48 49 myFile open(./qiushi.txt, a) #追加形式打开文件50 myFile.write(text \n\n)51 myFile.close()5253 defstartWork(self):54 55 控制爬虫运行56 57 #循环执行直到 self.switch False58 whileself.switch:59 #用户确定爬取的次数60 self.loadPage()61 command input(如果继续爬取请按回车(退出输入quit))62 if command quit:63 #如果停止爬取则输入 quit64 self.switch False65 #每次循环page页码自增166 self.page 167 print(爬取结束)686970 if __name__ __main__:71 #定义一个Spider对象72 qiushiSpider Spider()73 qiushiSpider.startWork()最终会在本地添加一个 qiushi.txt 的文件结果如下