添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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

直接开始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: 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 = {
                    Datawhale爬虫 第五期 Day7实战项目:汽车之家车型论坛帖子信息作为国内目前第一大汽车论坛,反爬虫很恶心,中间很多坑。新手,第一次搞这么复杂的爬虫,前期没有排查,都是遇到坑的时候再返回一个一个解决。直接开始requests,没几次就遇到了302跳转上代理,之前自己写爬的免费代理经常罢工,还慢,直接买的代。def get_proxie():    url = 'http...
   1.char 
    char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。   2.varchar(n)   
    长度为 n 个字节的可变长...
一,爬虫都是具有时效性的,我不知道反爬虫什么时候更新,所以失效以后,除非工作需要,否则我也一般会维护。
二,移动客户端网页一般比电脑的网页更好爬取,所以这次可以用汽车之家口碑的移动端网页,用电脑网页也可以,但是
https://jia666666.blog.csdn.net/article/details/108974149
-----------------------------------
以下是一步一步的学习过程
获取汽车之家贴吧的内容信息
汽车之家贴吧:https://club.autohome.com.cn/bbs/thread/1f05b4da4448439b/76044817-1.html###
F12获取目标信息-进行分析
存在爬虫字体,根据.
def crawler(base_url, output_dir):
    r = requests.get(base_url)
    soup = BeautifulSoup(r.text, 'html.parser')
    img_tags = soup.find_all('img')
    for img in img_tags:
        if 'src' in img.attrs:
            img_url = img.attrs['src']
            if img_url.startswith('//'):
                img_url = 'http:' + img_url
            elif not img_url.startswith('http'):
                img_url = base_url + '/' + img_url
            print('Downloading image: %s' % img_url)
            filename = os.path.join(output_dir, img_url.split('/')[-1])
            download_img(img_url, filename)
if __name__ == '__main__':
    base_url = 'https://www.autohome.com.cn/news/'
    output_dir = './images'
    if not os.path.exists(output_dir):
        os.mkdir(output_dir)
    crawler(base_url, output_dir)
该爬虫将从汽车之家的新闻页面 `https://www.autohome.com.cn/news/` 中爬取所有图片,并将其保存到本地目录 `./images` 中。
首先,爬虫会使用 requests 库向页面发送 GET 请求并获取页面 HTML,接着使用 BeautifulSoup 库将其解析为文档对象。然后,通过查找 HTML 标签中的 img 标签,找到所有图片,并将其下载到本地目录。
在下载图片时,使用 requests 库传递 "stream=True" 参数以保证请求不会立即下载整个响应内容。通过逐块处理响应,可以防止过多占用内存。然后,将内容写入文件中。
在主函数中,定义了基础 URL 和保存图像的输出目录。使用 os 模块确保输出目录存在并调用爬虫函数开始爬取