加入爬虫群第三周,这周的作业是:
008 - 爬虫处理流程及网页解析
009 - 使用XPath解析网页
010 - 使用BeautifulSoup和XPath抓取结构化数据
基本上就是用XPath和BeautifulSoup爬取数据。向右老师肯定不是想我们照着做一遍就好,但他肯定没想到有人连照着做一遍也有难度。
遇到的坑1是安装几个包,requests和lxml,这两个包是爬虫必须的,所以绕也绕不过去。简而言之,有至少三种安装方式
确定Python有装pip,pip是管理包的工具,然后运行:pip install requests。
把我的错误回溯,应该是以下步骤:
<blockquote>确认安装python同时也有安装pip.exe。我的是在python/Scirpts目录下,如果没有安装要重新卸载再安装python;
在计算机-高级设置处,变量环境的Path处加入D:/python/Scripts这个路径,(具体路径根据个人不同)
在cmd处进入到Scripts目录下,然后运行pip install requests下载whl文件,然后安装whl文件(这个只是百度到做法,但是没有尝试)
pip和requests包折腾了周二周三两个晚上,正好也特别累,就随便看看书和视频,然后到了lmxl包,也是线程的问题死活下不来,周四试完,周五没再试,周六继续,还尝试下lxml-3.7.2.tgz文件解压,最后程工看不下去直接扔给了我一个lmxl.exe包,然后就突然解放了....
以上就是我这周的功课....
为了不辜负大神的帮助,爬起来补作业...
向右老师这周刷了好几篇帖子,然后我就糊涂了,先看了009,做了一半发现其实还有008,但反正008和010也没看懂,就还是继续按照009做下去了
主要就是XPath的爬取方法。向右老师用了糗事百科做例子:
装好requests和lxml包以后,按照向右老师的代码,很快就爬出来了。
其实我比较不明白的是@id替换成@class="article block untagged mb15"这个做法,就算是大神讲了以后也还是不明白,只感觉是一种语法...
(大神说可以从w3school看Xpath语法,不过那里好像没有讲这个)
然后我就想实践的运用一下,爬煎蛋网的段子:(我平日里没有这些爱好!)
学到招数一:如果代码很长又无法输入文字搜索,在google chrome中打开开发者工具,点击左上角的小箭头,就能找到鼠标指向的段落的代码。
然后,用右键copy as Xpath看到代码,发现煎蛋网的段子代码很怪:
//*[@id="comment-3443278"]/div[1]/div/div[2]/p
作为没有其他办法的小白,我当然就简单的加上@class="article block untagged mb15",当然也很直接的失败了。
然后经过各种大神们的生拉硬拽,自己尝试各种排列组合,后来发现以下方法可行(不一定是最正确的方法:)
import requests
from lxml import etree
html=requests.get('http://jandan.net/duan').text
selector = etree.HTML(html)
content = selector.xpath('//div[@class="row"]/div[2]/p/text()')
for each in content:
print (each)
或者这样写也可以:
content = selector.xpath('//div[@class="row"]//p/text()')
但是只能爬一条,可能还是要加循环遍历才行。
看回上图,重点还是要理解网页结构。要一层一层的找,从最上的<div>定位。
前路漫漫啊,这周其实把SQL和beautifulsoup都略过了,下周再继续补作业....
谢谢老师和各位大神指导。