python爬虫之汽车之家论坛帖子内容爬取

本文记录了使用Python进行汽车之家车型论坛帖子信息爬取的过程,包括遇到的反爬虫挑战,如302跳转、代理IP、数据异常等问题,以及如何通过正则匹配过滤内容,处理404链接和视频帖,最终实现数据的完整爬取并使用多进程提高效率。
摘要由CSDN通过智能技术生成

Datawhale爬虫 第五期 Day7

实战项目:汽车之家车型论坛帖子信息

作为国内目前第一大汽车论坛,反爬虫很恶心,中间很多坑。

新手,第一次搞这么复杂的爬虫,前期没有排查,都是遇到坑的时候再返回一个一个解决。

直接开始requests,没几次就遇到了302跳转
在这里插入图片描述

上代理,之前自己写爬的免费代理经常罢工,还慢,直接买的代。

def get_proxie():
    url = 'http://tpv.daxiangdaili.com/ip/?tid=*******&num=1&delay=5&protocol=https'  # 代理在线API接口
    time.sleep(1)
    r = requests.get(url,timeout=8)
    if r.status_code == 200:
        ip = r.text
        return ip
    else:
        time.sleep(1)
        return get_proxie()

选择要爬的论坛,防止新发帖没有爬取到,选择按最新发布排序,然后从最后一页爬

https://club.autohome.com.cn/bbs/forum-c-4683-1.html?orderby=dateline

加上代理IP,heraders,开干
最先开始只判读返回状态码,结果爬了几页后发现返回状态码也是200,但是返回的数据居然变成了奥迪RS论坛的数据。

这里没有截图,等有了补上

然后就是根据论坛列表,先找到帖子链接。 因为论坛列表第一页会全站置顶的帖子及广告内容。还有版内置顶的帖子。xpath会把这些帖子匹配到,这里我用的正则匹配。
在这里插入图片描述代码:


club_list = requests.get(list_url, headers = headers, timeout=8, proxies=proxy)
            if '捷途X70论坛' in str(club_list.text):
                print('解析成功,正在获取帖子链接', list_url)
                pattern = re.compile('<dl.*?list_dl.*?lang.*?">.*?<a.*?href="(.*?)">.*?</dl>',re.S)
                items = re.findall(pattern, club_list.text)
                for item in items:
                    if '#pvareaid' in item:
                        pass
                    else:
                        topic_url = 'https://club.autohome.com.cn' + item
                        topic_list_url.append(topic_url)
            else:
                proxies = {
   
                    'https': 'https://' + str(get_proxie())
                }
                return get_url_list(list_url, headers, proxies)
            return topic_list_url
        except:
            proxies = {
   
                'https': 'https://' + str(get_proxie())
            }
            return get_url_list(list_url, headers, proxies)

获取帖子链接后就可以爬帖子内容了,这里又遇到一个坑。汽车之家的帖子被删除后,链接还是会返回404的状态码,只是内容被删除了,但还是能得到我要的数据。不管,也爬。

得到想的html后,然后就可以用xpath取内容。happy~~
但是,又遇到一个坑。爬了没几个帖子后,居然又报错了。xpath找不到对应的内容。打开链接发现除了正常的帖子外,还有视频帖,还是有我想的要数据,继续改。

def parse_one_page(url,html):
    #html = str(html)
    tree = etree.HTML(html)
    topic = tree.xpath('//*[@id="F0"]')
    TopicInfo = {
   }
    if topic:
        print(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值