用re.compile爬取豆瓣小说top250引言,如果有小说没有引言,如果某本书没有引言,则输出null。
时间: 2024-02-22 12:59:46 浏览: 146
好的,首先我们需要爬取豆瓣小说top250的网页内容,然后使用正则表达式匹配出每本书的引言。如果没有引言,则输出"null"。
以下是示例代码:
```python
import requests
import re
url = 'https://book.douban.com/top250?start='
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
for i in range(0, 250, 25):
res = requests.get(url + str(i), headers=headers)
html = res.text
pattern = re.compile(r'<div class="quote">([\s\S]*?)</span>', re.S)
quotes = pattern.findall(html)
for quote in quotes:
quote = quote.strip()
if quote == '':
print('null')
else:
print(quote)
```
这段代码首先循环遍历豆瓣小说top250的每一页,然后使用正则表达式`<div class="quote">([\s\S]*?)</span>`匹配每本书的引言,其中`[\s\S]*?`表示匹配任意字符(包括换行符)0次或多次,`</span>`用于匹配引言的结束标签。如果引言为空,则输出"null",否则输出引言内容。
注意,这里使用了`re.S`标志来匹配跨行的文本,否则正则表达式无法匹配含有换行符的文本。同时,为了防止被豆瓣网站反爬虫机制屏蔽,我们还需要设置一个合适的User-Agent头部信息。
阅读全文