python网络爬虫-爬取虎扑步行街数据

本文介绍了使用Python爬虫抓取虎扑步行街1到10页的数据,包括帖子名称、链接、发帖人信息等,并通过Mongodb存储。由于页面限制,未涉及登录后的数据抓取。解析gzip压缩的页面,避免乱码问题,并讨论了数据插入Mongodb时的注意事项。
摘要由CSDN通过智能技术生成
前言

由于虎扑页面的限制,因为访问虎扑步行街的第11个页面就需要用户进行登录,鉴于此时技术还没有学全,只能爬取1到10的页面。

抓取什么数据
  • 帖子名称
  • 帖子链接
  • 发帖人
  • 发帖人链接
  • 发帖时间
  • 帖子回复数
  • 帖子浏览数
  • 最后回复帖子的人
  • 最后回复的时间
如何抓取数据
  • 首先我们发现这个页面是用gzip进行压缩的,gzip是用utf-8进行编码的,也就是我们抓取的页面是用utf-8编码的,而r.text返回的是unicode编码的字符串,如果我们直接用就会出现乱码,因此,我们用r.content,返回的bytes数据(抓取音频,文件),然后将这个页面从utf-8解码为unicode编码

    html = r.content
    html = html.decode('utf-8') #将utf-8解码为unicode
    

  • 抓取数据对应的字段的html标签(代码中看)
用Mongodb存放抓取到的数据
  • 需要注意的问题,就是可能会出现本来在第一页的帖子,然后凉了啥的,被顶到了第二页,那么这时候就不能存放在数据库中,所以每次插入数据要进行判断一下
代码
import requests
from bs4 import BeautifulSoup
import time
from pymongo import MongoClient

def get_page(link):
    data_list = []
    headers = {
   
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0"
    }
    r = requests.get(link, headers=headers)
    html = r.content
    html = html.decode('utf-8') #将utf-8解码为unicode
    soup = BeautifulSoup(html, 'lxml')
    for_list = soup.find('ul', class_="for-list")
    for_list = for_list.find_all('li')
    for each_for in for_list:
        # 帖子名称
        for_name 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值