”按钮时,都会加载接下来的 20 个列表。我不知道如何找到实际的网-6ren">
gpt4 book ai didi

javascript - 如何使用scrapy爬取在下一个按钮中隐藏url为href ="javascript:;"的网站

转载 作者:行者123 更新时间:2023-11-28 13:24:11 25 4
gpt4 key购买 nike

最近在学习python和scrapy。我用谷歌搜索了几天,但我似乎没有找到任何关于如何在具有隐藏网址的网站上抓取多个页面的说明 - <a href="javascript:;" 。基本上每个页面包含 20 个列表,每次单击“>>”按钮时,都会加载接下来的 20 个列表。我不知道如何找到实际的网址,下面是源代码供您引用。非常感谢任何指示和帮助。

最佳答案

使用 Web 浏览器并激活 Web 开发人员工具访问该站点(以下屏幕截图是使用 Firefox 和附加 Firebug 制作的),您应该能够分析网络请求和响应。它将向您显示站点分页按钮发送如下请求:

enter image description here

所以 URL 似乎是:

http://rent.591.com.hk/?m=home&c=search&a=rslist&type=1&shType=list&p=2&searchtype=1

但这不是一个正常的请求。这是一个XMLHttpRequest。在 Header 选项卡下指示。响应采用 JSON 格式:

enter image description here

因此您不需要从复杂的嵌套 html 结构中获取数据,而是可以直接从 JSON 字典中获取数据。

我最终得到了这个 scrapy 代码(还有改进的空间):

import scrapy
import json

class RentObject(scrapy.Item):
address = scrapy.Field()
purpose = scrapy.Field()
# Add more fields as needed

class ScrapeSpider(scrapy.Spider):

name = "rent_hk"
allowed_domains = ['591.com.hk']
start_urls = ['http://rent.591.com.hk/?hl=en-us#list' ]

page_number = 0
page_num_max = 5 # for test purposes grab only up to 5 pages

def parse(self, response):

if 'page_number' in response.meta:
result_dict = json.loads(response.body) # get data as dict
for object in result_dict['items']:
ro = RentObject()
ro['address'] = object['address']
ro['purpose'] = object['purpose']
yield ro

# Make request for (next page) JSON data
self.page_number += 1

payload = {
'm': 'home',
'c': 'search',
'a': 'rslist',
'type': '1',
'p': str(self.page_number),
'searchtype': '1'
}

if self.page_number < self.page_num_max:
request = scrapy.FormRequest(url='http://rent.591.com.hk/',
method='GET',
formdata=payload,
headers={'Referer': 'http://rent.591.com.hk/?hl=en-us',
'X-Requested-With': 'XMLHttpRequest'},
callback=self.parse)
request.meta['page_number'] = self.page_number
yield request

这个网站对于 scrapy 初学者来说确实不容易 - 所以我编译了这个详细的答案。

关于javascript - 如何使用scrapy爬取在下一个按钮中隐藏url为href ="javascript:;"的网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30533868/

25 4 0
文章推荐: 表行切换上的 Jquery 更改图标
文章推荐: php - 在菜单中显示子类别而不是根目录
文章推荐: html - 格式化
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com