零基础也能学会,python采集整站小说!
2019-03-24 本文已影响1人
c067527d47c2
img
获取整站小说的url地址:
allurl='https://www.qidian.com/all?
当然在学习Python的道路上肯定会困难,没有好的学习资料,怎么去学习呢? 学习Python中有不明白推荐加入交流群 号:683380553 群里有志同道合的小伙伴,互帮互助, 群里有不错的视频学习教程和PDF!
分析url地址:
可以看到当你翻页时page是会跟随着变化的,寻找变化的规律。
重点:
从利用python采集一本小说中的一章这个思路出发,从一本小说中采集一章与从一夜中采集一本是同一个道理,然后利用循环采集所有小说。
代码:
当然在学习Python的道路上肯定会困难,没有好的学习资料,怎么去学习呢? 学习Python中有不明白推荐加入交流群号:683380553群里有志同道合的小伙伴,互帮互助,群里有不错的视频学习教程和PDF!
allurl='https://www.qidian.com/all?orderId=&style=1&pageSize=20&siteid=1&pubflag=0&hiddenField=0&page={}'
import requests
from lxml import etree
import os
for i in range(0,56495):
url=allurl.format(i)
#url='https://www.qidian.com/all'
respond = requests.get(url).text
#print(respond)
html = etree.HTML(respond)
data2 = html.xpath('//div[@class="book-mid-info"]/h4/a/text()')
print(data2)
data1 = html.xpath('//div[@class="book-mid-info"]/h4/a/@href')
#print(data2)
for shuming,lianjie in zip(data2,data1):
#print(shuming,lianjie)·
if os.path.exists(shuming) == False:
os.mkdir(shuming) # 创建文件夹
zj=requests.get("http:"+lianjie).text
html1=etree.HTML(zj)
zjlj=html1.xpath('//ul[@class="cf"]/li/a/@href')
zjmz=html1.xpath('//ul[@class="cf"]/li/a/text()')
#print(zjlj)
for a,b in zip(zjlj,zjmz):
#print(a,b)
respond1=requests.get('http:'+a).text
html3=etree.HTML(respond1)
wz=html3.xpath('//div[@class="read-content j_readContent"]/p/text()')
wza=" ".join(wz)
file_name = shuming + "\\" + b + ".txt"
print("正在抓取文章:" + file_name)
with open(file_name, 'a', encoding="utf-8") as f:
f.write(wza)
img