鱼C论坛

 找回密码
 立即注册
查看: 1978|回复: 8

鱼爹们爬虫如何解决反复爬取一个页面的问题

[复制链接]
发表于 2021-12-5 20:04:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
老哥们紧急求助,之前跟着一个视频教程来敲一个爬取懂车帝二手车的数据,前一整子还能够正常爬取但是最近可能是网页有了一下变动由于我不会举一反三导致我的爬虫页面一直反复爬取一个页面重复爬取
我爬取的网站是:https://www.dongchedi.com/usedca ... x-x-x-x-x-x-x-x-x-x
求助大佬帮忙!!!寻找一个问题!有偿有偿!!!打底一杯奶茶
代码如下:
import requests     # 发送网络请求
import parsel       # 解析数据
import csv          # 保存数据


csv_dcd = open('dcd.csv', mode='a', encoding='utf-8', newline='')
csv_write = csv.writer(csv_dcd)
csv_write.writerow(['品牌', '车龄', '里程(万公里)', '城市', '认证', '售价(万元)', '原价(万元)', '链接'])
for page in range(1, 168):
    # 1. 找到 目标网址
    url = f'https://www.dongchedi.com/usedcar/x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-1-1-x-x-x-x={page}'
    # 2. 发送请求
    # 3. 获取数据 html网页源代码
    # <Response [200]>: 请求成功的状态码 访问这个网站成功了
    html_data = requests.get(url).text
    # 4. 解析数据 re css xpath bs4 ...
    selector = parsel.Selector(html_data)
    # get(): 获取一个
    # getall(): 获取全部
    lis = selector.css('#__next > div:nth-child(2) > div.new-main.new > div > div > div.wrap > ul li')
    for li in lis:
        # 二次提取
        # ::text: 提取文本内容
        # 品牌
        title = li.css('a dl dt p::text').get()
        # 信息 年份 里程 城市
        # :nth-child(2):伪类选择器
        info = li.css('a dl dd:nth-child(2)::text').getall()
        # info  列表里面有两个元素
        # 列表合并为字符串
        info_str = ''.join(info)
        # 字符串的分割
        info_list = info_str.split('|')
        car_age = info_list[0]
        mileage = info_list[1].replace('万公里', '')
        city = info_list[2].strip()
        # 链接
        link = 'https://www.dongchedi.com' + li.css('a::attr(href)').get()
        dds = li.css('a dl dd')
        # 如果当前 有 4个dd标签
        if len(dds) == 4:
            # 懂车帝认证
            dcd_auth = li.css('a dl dd:nth-child(3) span::text').get()
            price = li.css('a dl dd:nth-child(4)::text').get()
            original_price = li.css('a dl dd:nth-child(5)::text').get()
        else:
            dcd_auth = '无认证'
            price = li.css('a dl dd:nth-child(3)::text').get()
            original_price = li.css('a dl dd:nth-child(4)::text').get()
        price = price.replace('万', '')
        original_price = original_price.replace('新车含税价: ', '').replace('万', '')
        print(title, car_age, mileage, city, dcd_auth, price, original_price, link)
        csv_write.writerow([title, car_age, mileage, city, dcd_auth, price, original_price, link])
csv_dcd.close()
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-12-6 14:32:50 | 显示全部楼层
看了下,你这URL后面页码错了吧
https://www.dongchedi.com/usedca ... -x-x-x-x-x-x-x-x-1-{Page}-x-x-x-x
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-6 16:10:57 | 显示全部楼层
我看网页url变了:url = f'https://www.dongchedi.com/usedcar/x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-1-{page}-x-x-x-x'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-6 16:39:56 | 显示全部楼层
suchocolate 发表于 2021-12-6 16:10
我看网页url变了:url = f'https://www.dongchedi.com/usedcar/x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x ...

我昨天检查了一下,是这个网站前不久加入了字体反爬,导致爬取出错的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-6 16:40:28 | 显示全部楼层
msx6666 发表于 2021-12-6 16:39
我昨天检查了一下,是这个网站前不久加入了字体反爬,导致爬取出错的

但是不会解决呜呜呜
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-6 17:57:56 | 显示全部楼层
msx6666 发表于 2021-12-6 16:40
但是不会解决呜呜呜

我改了url已经可以翻页了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-6 20:46:10 | 显示全部楼层
suchocolate 发表于 2021-12-6 17:57
我改了url已经可以翻页了

是的,但是网站加入了字体反爬不知道如何攻克这个问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-6 20:55:30 | 显示全部楼层
msx6666 发表于 2021-12-6 20:46
是的,但是网站加入了字体反爬不知道如何攻克这个问题

那就是另外的问题了吧?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-8 16:39:59 | 显示全部楼层
suchocolate 发表于 2021-12-6 20:55
那就是另外的问题了吧?

是的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-30 18:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表