第一步打开起点月票排行榜:
https://www.qidian.com/rank/yuepiao/
F12查看源代码或者右键点击查看源代码,可以看到代码:
然后根据正则表达式去获取信息,代码如下:
import requests
import re
import csv
from fake_useragent import UserAgent
url = "https://www.qidian.com/rank/yuepiao/"
headers= {'User-Agent':str(UserAgent().random)}
resp = requests.get(url, headers=headers)
page_content = resp.text
# 解析数据
qidian = re.compile(r'最新章节在线阅读">(?P<name>.*?)</a></h2> <p class="author">.*?data-eid=".*?">(?P<renname>.*?)</a><em>'
r'.*?em><span>(?P<state>.*?)</span> </p> <p class="intro">(?P<tell>.*?)</p> <p class="update">', re.S)# re.S: 让.能匹配换行符
# 开始匹配
result = qidian.finditer(page_content)
f = open("qiandian.csv", mode="w")
csvwriter = csv.writer(f)
for it in result:
print(it.group("name"))
print(it.group("renname"))
print(it.group("state"))
print(it.group("tell"))
dic = it.groupdict()
csvwriter.writerow(dic.values())
f.close()
print("over!")
代码实现了读取并且保存到csv文件的功能,其中需要注意的是(?P<分组名字>正则) 可以单独从正则匹配的内容中进一步提取内容
。
保存的csv数据如下: