Python 爬取异步加载的数据

本文介绍了一种使用Python爬取网站上异步加载数据的方法。通过发送GET和POST请求并结合XPath解析,实现了对下拉菜单选项及其异步加载内容的完整抓取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Catalog

爬取内容

  • 下拉菜单异步加载的数据
    这里写图片描述

获取异步加载的文件

  • F12,查看网络,筛选XHR,点击下拉菜单,等待异步加载的文件
    这里写图片描述

代码

import requests
from lxml import etree
# 浏览器伪装
ua = 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko'
header = {"User-Agent": ua}
# GET请求
url = 'http://www.runoob.com/ajax/ajax-database.html'
r = requests.get(url, headers=header)
r.encoding = 'urf-8'
text = r.text
# xpath提取信息
element = etree.HTML(text)
options = element.xpath('/html/body/div[3]/div/div[2]/div/div[3]/div/div[1]/div/form/select/option/@value')
print(options)
# 提取异步加载的信息
for option in options:
    # POST请求
    d = {'q': option.strip()}
    url = 'http://www.runoob.com/try/ajax/getcustomer.php'
    r = requests.post(url, headers=header, data=d)
    r.encoding = 'GBK'
    text = r.text
    # xpath提取信息
    element = etree.HTML(text)
    em = element.xpath('//tr/td[1]/em/text()')
    td = element.xpath('//tr/td[2]/text()')
    for e, t in zip(em, td):
        print(e, ' | ', t)
    print('-' * 55, options.index(option) + 1)

打印结果

[‘APPLE’, ‘BAIDU ‘, ‘Canon’, ‘Google’, ‘Nokia’, ‘SONY’]
CustomerID | APPLE
CompanyName | Apple Computer, Inc.
ContactName | Steven Jobs
Address | 1 Infinite Loop Cupertino, CA 95014
City | Cupertino
PostalCode | 95014
Country | USA
——————————————————- 1
CustomerID | BAIDU
CompanyName | BAIDU, Inc
ContactName | Li YanHong
Address | Lixiang guoji dasha,No 58, beisihuanxilu
City | Beijing
PostalCode | 100080
Country | China
——————————————————- 2
CustomerID | Canon
CompanyName | Canon USA, Inc.
ContactName | Tsuneji Uchida
Address | One Canon Plaza Lake Success, NY 11042
City | New York
PostalCode | 11042
Country | USA
——————————————————- 3
CustomerID | Google
CompanyName | Google, Inc.
ContactName | Larry Page
Address | 1600 Amphitheatre Parkway Mountain View, CA 94043
City | Mountain View
PostalCode | 94043
Country | USA
——————————————————- 4
CustomerID | Nokia
CompanyName | Nokia Corporation
ContactName | Olli-Pekka Kallasvuo
Address | P.O. Box 226, FIN-00045 Nokia Group, Finland
City | Helsinki
PostalCode | none
Country | Finland
——————————————————- 5
CustomerID | SONY
CompanyName | Sony Corporation of America
ContactName | Kazuo Hirai
Address | Park Ridge, NJ 07656
City | Park Ridge
PostalCode | 07656
Country | USA
——————————————————- 6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值