当前位置:AIGC资讯 > 数据采集 > 正文

python爬虫二级子页面爬取

python爬虫二级页面爬取

文章目录

python爬虫二级页面爬取 前言 一、流程 二、操作部分 1.请求头设置 2.第一级页面爬取 3.二级页面内容爬取 4.运行结果

前言

推荐一个爬虫的小玩意
叫 xpath helper
是一个扩展程序
打开可以直接定位你想要地方的位置
crx文件我没有了,百度总会找到的
效果:

python爬虫爬取二级子页面,是在第一级页面爬取到第二级页面的链接,通过链接去访问二级页面进行爬取。

一、流程


①爬虫的第一个步骤就是对起始 URL 发送请求,以获取其返回的响应;
②返回的网页数据,我们需要进行解析,提取出二级页面链接;
③将二级页面链接返回url队列再一次重复①
④解析二级页面,定位所需内容
⑤保持数据,一般为csv、excle、josn

二、操作部分

1.请求头设置

emm
请求头一定要设置好
现在加user-agent不一定能解析页面获取内容,这个时候我们需要加一个cookie。

你可以这样理解cookie,你找了个吃饭的地,吃完你走了,第二次你又去,就像给他打声招呼,嗨,我又来了,他一看是熟人,直接就让你进了,如此,就不用一直被检测。

果然脑子里只能想到干饭

代码:

def head_x():  #设置请求头
    header = {
        'User-Agent': 'xxx',
        'Cookie': 'xxx'
    }
    return header

2.第一级页面爬取

标红的就是车的链接

import requests
from lxml import etree
import numpy as np
import time
import pandas as pd
import re

def html_link():  #得到二级页面链接
    list = []
    for i in range(1,13):
        print('爬取第{}页'.format(i))
        url = 'https://www.maodou.com/car-list/all/pg{}?keyword='.format(i)
        head = head_x()
        rq = requests.get(url,headers=head)
        html = etree.HTML(rq.content)
        rqq = html.xpath('//div[@class="list-wrap clearfix"]/a/@href')
        list.extend(rqq)
        print(rqq)
        time.sleep(np.random.randint(1,3))
    return list

这个地方主要目标是爬取第二页面的链接
当然如果提取,第一页面的内容也是可以的

3.二级页面内容爬取


我就爬了这几个,也可以爬更多

def second_page():  #二级子页面
    list_link = html_link()
    list_1 = []
    for i in list_link:
        item = {}
        rqqq = requests.get(i,headers=head_x())
        time.sleep(np.random.randint(1,3))
        html = etree.HTML(rqqq.content)
        item['name'] = re.sub("\s", "", ",".join(html.xpath('//*[@id="banner"]/div[@class="banner clearfix"]/div[@class="banner-right"]/h2/text()')))
        item['price'] = re.sub("\s", "", ",".join(html.xpath('//*[@id="banner"]/div[@class="banner clearfix"]/div[@class="banner-right"]/p/text()')))
        item['first_pay'] = re.sub("\s", "", ",".join(html.xpath('//div[@class="sy-yf"]/div[@class="sy"]/p[@class="sy-num"]/text()')))
        list_1.append(item)
        print(item)
    return list_1
    
def save_data():
    data = second_page()
    data = pd.DataFrame(data)
    data.to_csv('二手车数据.csv',index=False)
    return data


if __name__ == '__main__':
    used_car = save_data()

运行

4.运行结果


差不多就这样


差不多就这样了

干饭干饭!!!

更新时间 2023-11-08