使用python爬虫,requests(夹带BeautifulSoup的使用)爬取网络小说
由于本人也是初学者,算是小白一枚,这里跟大家分享一下爬取网站上的小说的过程。
第一步我们需要导入我们需要的模块,比如requests,BeautifulSoup,还有正则模块re。
import re
import requests
from bs4 import BeautifulSoup
然后我们需要找到我们需要爬取的网站,这里我选用了这个网站:*
http://www.tianxiabachang.cn
接下来就是我们需要爬出小说的html,随便在这个网站找到了一本小说,就比如说《雪中悍刀行》吧。
url = 'http://www.tianxiabachang.cn/7_7568/'
response = requests.get(url)
response.encoding = 'utf-8'
html = response.text
这样我们就能很简单的爬取到了这个小说的章节目录所在的html
但是很多时候网站都会有一定的反爬虫机制,访问几次之后我们所在的IP就会被封锁,所以我们就需要做一个简单的反反爬虫操作,那就是给你的get请求加上header,这个header可以在目标网页上找到。
比如这个就是之前我们网页的源码,(可以摁键盘上的F12或者右击鼠标点击检查,找到之后可以刷新一次)我们需要的是Request Headers下面的User-Agent,我们复制过来,然后就成了下面的情况。
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
直到目前为止我们爬取了《雪中悍刀行》的目录所在页的html了。
下一步就是找到我们爬取到的html,来进行正则处理,找到我们需要的从第一章到最后一章的所有内容
soup = BeautifulSoup(html,'html.parser')
one = soup.find("div",attrs={
"id":"list"})
这样我们就得到了部分我们需要的内容:
根据这个图片,我们可以从当中写出正则表达式
pattern1 = re.compile('<dd><a href="/7_7568/(.*?)">',re.S)
pattern2 = re.compile(