「这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战」
前面说到,爬虫的步骤
1.定位位置目标;2.下载网页;3.设置速度,找到目标文件;4.找到目标文件;5.下载目标文件;6.提取关键数据
这次就不一步步的说了。今天来爬取以下凡人修仙传,首先打开网页www.ibswtan.com/17/17023/
啥也别管,先把网页下载下来看看。用requests模块
import requests
import bs4
import os
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
'cookie': 'BIDUPSID=45588421F978DE2902A1A47464D72AB3; PSTM=1609986056; BAIDUID=45588421F978DE29E3D21BB7BB5A6873:FG=1; REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; HISTORY_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; __yjs_duid=1_e3607a56e43709e2ca3db4147c46396a1612784778582; BAIDUID_BFESS=45588421F978DE29E3D21BB7BB5A6873:FG=1; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1614696427; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1614697139; __yjsv5_shitong=1.0_7_253e552513b2cf371866473b2e57fb4e5137_300_1614697145680_59.50.85.17_fe15699c; ab_sr=1.0.0_ZDRiZDU1NjAzNjRkMDUyOWE3ZTg3MWZlMjRhMGE4NzkwYmI3N2ExMzliMjY3MjIxOGIyY2EyMmMxNWQzOWFmY2UyZDZjMGFkYzVjNWZkNGQ1ZWIxMTJmYjZjM2Y0M2M2'
}
url_start = 'https://www.ibswtan.com/17/17023/' #凡人修仙传
不难发现,里面有章节选择,咱们选择第一章就好了。当然,我们可以建立一个书签
#创建书签
if '书签.txt' not in os.listdir():
with open('书签.txt','w') as f:
f.write('1146042.html') #第一章
end = ''
while end!='q':
with open('书签.txt','r') as f:
now = f.read()
url = url_start+now
res = requests.get(url=url,headers = headers)
res.encoding="utf-8" #解码不行就gbk
soup = bs4.BeautifulSoup(res.text, "html.parser")
title = soup.find_all('h1')
print(f"========== {title[0].text} =============")
targets = soup.find_all("div", id="content")[0]
for i in targets:
if str(i) != '<br/>' and str(i) != '\n':
print(i)
end = input() #回车下一行,输入q结束,我喜欢一行一行读
if end == 'q':
break
if end == 'q':
break
next_ = soup.find_all('a',text='下一章')
with open('书签.txt','w') as f:
f.write(str(next_[1]).split('"')[1])
end = input('回车下一章')
上方的一段循环里面,为了方便阅读,我们放进这一循环,当阅读完后就直接按ENTER键到下一页,这样摸鱼的时候也方便的很。
for i in targets:
if str(i) != '<br/>' and str(i) != '\n':
print(i)
end = input() #回车下一行,输入q结束,我喜欢一行一行读
if end == 'q':
break
if end == 'q':
break
最后效果如下,当然我们还能设置一些字体的大小或者别的,如果实在嫌麻烦,可以打开pycharm 随便调:
小说网站的反爬并不多,所以做起来还是简单的。其实HTTP代理在爬虫中也起着非常重要的作用。众所周知,在大多数情况下,在爬虫爬行的过程中,我们很可能会遇到当前ip地址不可用或有ip限制的情况。这个时候,我们经常为ip头疼。当然,代理服务器被允许使用大量的假冒ip地址,这一方面可以满足ip号码的需求,另一方面也减少了ip资源的浪费。