爬取豆瓣读书-用户信息页链接(Python爬虫实战)

接着上一篇博客(爬取豆瓣读书-用户所有阅读书籍名称、日期和书籍链接),进行对用户信息页链接抓取,采用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]|[$-_@.&+]|[!*\(\),]|(?:%[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)
        
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值