爬取豆瓣读书-用户信息页链接(Python爬虫实战)
程序员文章站
2022-04-08 23:20:09
...
接着上一篇博客(爬取豆瓣读书-用户所有阅读书籍名称、日期和书籍链接),进行对用户信息页链接抓取,采用BeautifulSoup框架
我的上一篇博客传送门
这篇博客主要是获取大量的用户介绍网页链接,这样结合上一篇博客,就可以获取大量用户的读书信息,供分析豆瓣读书中用户兴趣的相关研究者使用。废话不多说,直接上代码!!!
import requests
from bs4 import BeautifulSoup
import re
def GetUrlList(link):
#保存用户信息页链接
f=open("user_urls.csv","a",encoding="utf-8")
res=requests.get(link,headers=headers)
res.encoding='utf-8'
soup=BeautifulSoup(res.text)
url_text=str(soup.find_all("span",class_="comment-info"))
#正则表达式匹配
pattern = re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[[email protected]&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') # 匹配模式
user_urls=re.findall(pattern,url_text)
#写入网页链接信息
for url in user_urls:
f.write(url+"\n")
print(user_urls)
print(len(user_urls))
#自行修改你的域名
start_link = 'https://book.douban.com/subject/1007305/comments/hot?p='
headers = {
"Host": "book.douban.com",
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
#获取用户评论页数
def get_pageNum():
res=requests.get("https://book.douban.com/subject/1007305/comments/",headers=headers)
res.encoding='utf-8'
soup=BeautifulSoup(res.text)
nums=soup.find_all('span',id='total-comments')
print(nums)
pageNum=re.findall('\d+',str(nums).replace("h1",""))[0]
print(pageNum)
return int(int(pageNum)/20)+1
if __name__=="__main__":
# 页数
depth =get_pageNum()
for i in range(depth):
print("正在抓取第"+str(i+1)+"页的用户链接...")
link= start_link + str(i+1)
GetUrlList(link)