糗事百科段子爬取

糗事百科(xpath高级用法)
1.目标 : 用户昵称 内容 好笑数量 评论数
2.步骤
1.URL
https://www.qiushibaike.com/text/
2.xpath表达式
1.匹配出所有段子的对象
//div[contains(@id,“qiushi_tag_”)]

import requests
from lxml import etree
import pymongo

class QiushiSpider:
    def __init__(self):
        self.url = "https://www.qiushibaike.com/text/"
        self.headers = {"User-Agent":"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)"}
        # 链接对象
        self.conn = pymongo.MongoClient("数据库地址",27017)
        # 库对象
        self.db = self.conn["Qiushidb"]
        # 集合对象
        self.myset = self.db["zhuanye"]

# 获取页面
def getPage(self):
    res = requests.get(self.url,headers=self.headers)
    res.enconding = "utf-8"
    html = res.text
    self.parsePage(html)

# 解析并写入数据库
def parsePage(self,html):
    parseHtml = etree.HTML(html)
    # 基准XPath,每个段子对象
    baseList = parseHtml.xpath('//div[contains(@id,"qiushi_tag_")]')
    # for循环遍历每个段子对象,1个1个提取
    for base in baseList:
        # base : <element at ...>
        # 用户昵称
        username = base.xpath('./div/a/h2')
        if username:
            username = username[0].text
        else:
            username = "匿名用户"
        # 段子内容
        content = base.xpath('./a/div[@class="content"]/span')[0].text
        content = "".join(content).strip()
        # 好笑数量
        laughNum = base.xpath('.//i[@class="number"]')[0].text
        # 评论数量
        commentsNum = base.xpath('.//i[@class="number"]')[1].text
        # 定义字典存mongo
        d = {
            "username":username.strip(),
            "content":content.strip(),
            "laughNum":laughNum,
            "commentsNum":commentsNum
            }
        self.myset.insert_one(d)

# 主函数
def workOn(self):
    print("正在爬取中.....")
    self.getPage()
    print("爬取结束,存入Qiushidb")
        
if __name __ == "__main __":
    spider = QiushiSpider()
    spider.workOn()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值