引言

  上篇文章挖了个坑说要解释爬虫的程序,那就找时间填上了,其实Python的爬虫十分的简单,基本上只有要有一个模板,就可以了,这里恬不知耻的推广一下我的模板,我的这个爬虫前面的两个准备文件比较完善,可以直接套用,提高爬虫的安全性。

核心代码

url的获取

作为爬虫肯定要知道哪一个网址是目标,然后进行观察,网址是不是有翻页的能力,有的话翻页的能力在url上是怎么体现的,总结出翻页的时候url的变化规律,根据这个规律在你的爬虫中先自己生成一个或者是一组的请求url这就是第一步

爬取内容

我使用的是Python提供的request和lxml包中的etree。当你确定了你的url之后使用python的request获取这个网页的数据。然后使用etree对网页的内容进行解析。这两个步骤的代码比较简单。

1
2
data = requests.get(url, headers=headers, proxies=proxies)  # 此处是请求
html = etree.HTML(data.text) # 网页的解析

xpath的使用

这个才是爬虫的真正的精髓,通过python提供的解析其实非常容易实现。这里只解释非常常用的几种语法,至于所有的xpath语法,可以参考这个网页

  1. 选取一个元素的所有子节点就是直接使用

    1
    html.xpath("nodename")
  2. 从根节点选取

    1
    html.xpath("/nodename")
  3. 从一个节点中选取所有的同名子节点

    1
    html.xpath("/nodename/nodename2")
  4. 从匹配选择的当前节点选择所有规定名字的节点,而不考虑它们的位置。

    1
    html.xpath("//nodename")
  5. 选取某个节点的属性

    1
    html.xpath("/nodename/@src") # 选取nodename节点的src属性值
  6. 选取某个节点的内容

    1
    html.xpath("/nodename/text()") # 选取nodename中的内容
  7. 筛选具有某个属性特定值的节点

    1
    html.xpath("/nodename@[src="https://icimence.cn"]")

这些基本上是比较常用的,详细的还是看上文给出的链接即可。

Json数据格式打包

这部分就是普通的代码模板,直接放代码吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for book_name, book_img, author_name, press, press_year, pages, price, ISBN, score, number_reviewers, introduction in zip(
book_name, book_img, author_name, press, press_year, pages, price, ISBN, score, number_reviewers, introduction):
result = {
"book_name": book_name,
"book_img": book_img,
"author_name": author_name,
"press": press,
"press_year": press_year,
"pages": pages,
"price": price,
"ISBN": ISBN,
"score": score,
"number_reviewers": number_reviewers,
"introduction": introduction
}

结语

  结合上文的介绍和上一篇文章的模板,相信有一定Python基础的人都能写出一个较为实用的爬虫程序了,你可以开始自己的创作了!