python糗事百科爬虫

思路

1.获取主页源码

     #怎么知道网站禁止爬虫 
    #1.想要的内容跟请求道德内容不一样
    #2.无法获取到内容,请求失败
    #3.点击右键,看不到内容
    #怎么解决网站禁止爬虫
    #1.伪装浏览器,模拟 加上headers头部信息
    #2.告诉网站,我想在用浏览器在访问,而不是用脚本

2.获取文章内容

find_all 找到下面所有标签的内容
find 找到一个
'qiushi_tag_119540416'.split('_')[-1]  可以用split分割符
a = 'qiushi_tag_119540416'  
a[11:-1]   可以用切片
get_text 获取文字

3.获取评论

4.用户输入操作

代码

import urllib.request
from bs4 import BeautifulSoup #导入 bs4 库
#Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据
#获取主页源码
def getContentOrComment(Url):
    user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/51.0.2704.63 Safari/537.36'
    headers = {'User-Agent':user_agent}#浏览器信息
    req = urllib.request.Request(url = Url,headers = headers)
    response = urllib.request.urlopen(req)
    content = response.read()
    #print(content)
    return(content)

articalUrl = "https://www.qiushibaike.com/textnew/page/%d"#%d占位符
commentUrl = "https://www.qiushibaike.com/article/%s" #%s占位符
page = 0
while True:
    raw = input("点击enter查看或者输入exit退出,请输入你的选择:")
    if raw =="exit":
        break
    page+=1
    Url = articalUrl % page #%代表的是数字 字符串格式化
    print(Url)
    articlePage = getContentOrComment(Url)
    #获取文章内容
    #创建 beautifulsoup 对象
    soupArticle = BeautifulSoup(articlePage,'html.parser')#解析网页 解析
    #第一步是用爬虫把目标网站的页面抓下来
    #第二步就是解析该HTML页面,看看里面的内容到底是新闻、图片还是视频
    #Python提供了HTMLParser来非常方便地解析HTML
    articleFloor = 1#楼层
    for string in soupArticle.find_all(attrs = "article block untagged mb15"):
        # 限制了标签为article block untagged mb15
        commentId = str(string.get('id'))[11:]
        print(articleFloor,".",string.find(attrs="content").get_text().strip())#获取文本
        articleFloor+=1
        #获取评论
        commentPage = getContentOrComment(commentUrl % commentId)#获取详情页的源码
        if commentPage is None:
            continue
        soupComment = BeautifulSoup(commentPage,'html.parser')
        commentFloor = 1
        for comment in soupComment.find_all(attrs="body"):
            print("    ",commentFloor,"楼回复:",comment.get_text().strip())
            commentFloor += 1

参考


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值