目录
热文抢先看:
本文将会介绍两种常用的爬虫框架,为想要学习爬虫的小伙伴提供一点方向。
主要用的方式是Xpath
这里先介绍一下,如何快捷的使用Xpath
我们可以在浏览器中使用插件

下面附上插件Xpath的链接
链接:https://pan.baidu.com/s/1WaIn2MTqzimyxLFijqst5Q
提取码:phvs
至于如何使用Xpath请看我的另一篇博客:
http://t.csdn.cn/C6zIu
一、单页爬虫框架
实例一:该实例以使用requests库请求网页方法,爬取豆瓣最受欢迎图书榜单与图书简介,保存到CSV文件中
具体代码如下所示:
import requests
from lxml import etree
import os
import csv
url = "https://book.douban.com/chart"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 Edg/83.0.478.58'
}
resp2=requests.get(url=url, headers=headers,timeout=5)
resp2.encoding='utf-8'
html=resp2.text #将url中的页面源码的文本内容存放到变量html中
#print(html)
tree=etree.HTML(html) #使用etree方法将上一步的html作为参数 生成xpath的待解析对象
bookname = tree.xpath('//a[@class="fleft"]/text()')
message = tree.xpath('//p[@class="subject-abstract color-gray"]/text()')
#print(message)
def save_to_csv(bookname,message):
is_exists=False
if os.path.exists("BookMessage.csv"):
is_exist=True
with open("BookMessage.csv","a",encoding="utf-8",newline="")as csvfile:
writer=csv.writer(csvfile)
if not is_exists:
writer.writerow(['Bookname','Message'])
writer.writerow([bookname, message])
for i,j in zip(bookname,message):
j = j.replace('\n', '')
j = j.replace(' ', '')
print(i,j)
save_to_csv(i, j)
二、多页爬虫框架
实例二:爬取广州所有地铁线路,并把地铁线路的途径站点信息输出到控制台,并保存到CSV文件中
首先创建一个所有线路详情页的前缀pre_url,再创建一个包含所有线路详情页的url。
用xpath解析出所有页面的后缀
用for循环遍历解析出的后缀,并添加进前缀pre_url中
接下来的操作和实例一同上
import requests
from lxml import etree
import csv
pre_url = "https://dt.8684.cn" #先将所有线路详情页的前缀存入pre——url变量
url = "https://dt.8684.cn/gz" #这个是包含所有线路详情页的url
html = requests.get(url) #获取一级网页url的源码、
html.encoding='utf-8'
html=html.text
tree = etree.HTML(html) #生成xpath的待解析对象
subway_line_urls=tree.xpath('//ul[@class="ib-mn rl-mn ib-box"]/li/a[2]/@href')
#print(subway_line_urls)
def save_to_csv(line,stations):
with open("SubwayMessage1.csv", "a", encoding="utf-8", newline="") as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['地铁线路', '站点信息'])
writer.writerow([line,stations])
for i in subway_line_urls:
subway_line_html = requests.get(pre_url + i)
subway_line_html.encoding = 'utf-8'
subway_line_html = subway_line_html.text
tree = etree.HTML(subway_line_html)
subway_stations = tree.xpath('//a[@class="cl-station"]/text()')
subway_line_name = tree.xpath('//em[@class="lm-tt"]/text()')
#print(subway_line_name[0],subway_stations)
#print(subway_line_name)
#print(subway_line_name,subway_stations)
save_to_csv(subway_line_name, subway_stations)
print("爬取完成!")
本文介绍两种常见爬虫框架的应用案例,包括单页爬虫抓取豆瓣图书榜单及多页爬虫抓取广州地铁线路信息,并详细展示了使用Xpath进行数据提取的过程。
&spm=1001.2101.3001.5002&articleId=127036133&d=1&t=3&u=d26ca424b02348d091fa7eb57cb8bad9)

被折叠的 条评论
为什么被折叠?



