1.流程
# ① 导入request库
# ② 明确需要爬虫的网页url,定义浏览器请求头,添加相关参数如user_gester\cookie
# ③ 定义响应response,使用request请求
# ④ 导入解析器htlm=response.text导出网页代码
# ⑤ 使用etree解析代码得到网页的树形结构tree
# ⑥ 定义列表 li_list,使用树形结构tree里面的xpath路径
# ⑦ for循环li_list里面的所有列表li
# ⑧ 定义需要获取的变量,用li后面的代码,和前面的衔接,比如name=./后面的代码巴拉巴拉text()
# ⑨ 存储,定义一个列表xx=[ ],for循环前面
# ⑩ for里面让xx.append(命名), ————for外面,用with open 保存
2.注意事项
# get请求返回的是一个网页
# post请求返回的是一个表单
# status code 表示请求得到的response值为200表示请求成功,返回404表示网页不存在
# htlm是网页源代码的意思
# lxml:request库里面解析源代码的库
# jion:解析库,可以同意删除“ ”里面的东西
# w每次运行情况
# a每次续写
3.代码
import requests
from lxml import etree
import csv
# 网页链接,明确需要爬虫的网页url
url="修改为具体网址"
# 定义请求头,并添加相关参数,如user_gester\cookie
headers={
"User-Agent":"修改为自己的浏览器请求头"
}
# 定义响应response,使用request请求,注意不同的请求使用的方式不一样,要去网页检查,如本项目使用get请求
response = requests.get(url=url, headers=headers)
# 导入解析器htlm=response.text导出网页代码
html=response.text
# print(html) # 可以检查运行情况
# 使用etree解析代码得到网页的树形结构tree
tree=etree.HTML(html)
# print(tree) # 检查运行情况
# 定义列表 li_list,使用树形结构tree里面的xpath路径,其中li也可以是别的什么,只是用li表示列表更清楚
dd_list=tree.xpath("//*[@id='list']/dl/dd")
# 明确需要获取的东西是什么
name_list=[]
lianjie_list=[]
# for循环li_list里面的所有列表li
for dd in dd_list:
# name=dd.xpath("./a/@title")
# 定义需要获取的变量,用li后面的代码,和前面的衔接,比如name=./后面的代码巴拉巴拉text(),
# text是获取文本结构数据的意思
name=dd.xpath("./a/text()")
# name=dd.xpath("./a[@title='第二十三章']/text()") # 定位23章,绝对路径
# name=dd.xpath("./a[@href='/xs/11446/6815238.html']/text()") # 定位23章
lianjie=dd.xpath("./a/@href")
# @href是获取链接数据,主要是看xpath路径中,@href=什么
a="".join(name)
b="".join(lianjie)
B="https://"+"www.zzxx"+".org"+b
name_list.append(a)
lianjie_list.append(B)
# with open("bqg.txt","w",encoding="utf-8") as f: # 写入的时候就转码为中文了
# for a,B in zip(name_list,lianjie_list):
# f.write(f"{a}-{B}\n")
with open('7.csv', 'w', newline='', encoding='utf-8') as file: # newline 作用是删除空行
writer = csv.writer(file)
# 写入表头
writer.writerow(['章节', '链接'])
# 遍历电影名称和排名的列表,并将它们作为一行写入文件
for name, rank in zip(name_list, lianjie_list):
writer.writerow([name, rank])
4.代码备份情况
文件在"D:\爬虫学习\爬虫request"
环境名是“fenghuang”