在开始写爬虫前,对行为与方法进行整理,有流程和目的的框架,以一个实际案例作例:
目的:爬取某网站下100页中,各个标题下的详细页面中的详情内容。代码的结构可能是这样的:
for 网站的100页:
for 各个标题:
详情内容:
流程:可以自顶而下,也可以由下到上
1、找到某网站的跟路径;
Xpath
1、Xpath使用;(xml和html都支持)比正则表达式强大而简单;
2、多线程爬取;
lxml就是xpath的库名称。
导入方式:from lxml import etree
使用方式:
1、selector = etree.HTML(网页代码)
2、selector.xpath(”这里是路径,举例如下“)
//:表示定位到根节点
/:下一级
/:文本
@:属性开头,相当于字典的键
举例:selector.xpath("//ul[2][@id =“name1”]/li[3]/text()")
理解为:在根路径下,找到第二个ul中id为name1下,找到第三个li中的文本。
以相同字符开头
starts-with(@属性)
标签套标签
线程
from multiprocessing.dummy import
多线程操作下,所取到的数据没有必然顺序,都是在哥哥线程上各自抢负荷。