我收到空的导出文件、scrapy、剧作家、XHR 请求

im getting empty exported file, scrapy, playwright, XHR requests

我对 scrapy 和 python 很陌生。所以这周我试图从网页上抓取 XHR 请求,但我不知道为什么我每次都得到空导出, 这是这篇文章:(顺便说一句,谢谢你的精彩文章) https://www.zenrows.com/blog/web-scraping-intercepting-xhr-requests#use-case-auctioncom


导入scrapy 从 playwright.sync_api 导入 sync_playwright

class GavSpider(scrapy.Spider): 姓名 = 'gav'

url = "https://www.g2g.com/categories/wow-classic-tbc-gold-for-sale?region_id=ac3f85c1-7562-437e-b125-e89576b9a38e"

与 sync_playwright() 作为 p: def handle_response(响应): # 我们感兴趣的端点 如果(response.url 中的“/搜索?”): items = response.json()["payload"]["results"] [print(item["title"], item["display_price"]) for item in items]

browser = p.chromium.launch() 
page = browser.new_page() 

page.on("response", handle_response) 
page.goto(url, wait_until="networkidle") 

page.context.close() 
browser.close() 

顺便说一句,我可以完美地抓取它,它只是导出结果。 如果你能给我一些基本的技巧、线索或任何能让我在 xhr 抓取和导出数据方面做得更好的东西,我将不胜感激。

存储抓取结果以将其导出为 CSV 的简单方法。我修改了您的代码,它会将结果项保存在“data.csv”文件中。

根据这个想法,您可以随心所欲地扩大规模。抓取不同的页面并附加到项目数组。或者使用“to_sql”代替“to_csv”将其存储在数据库中。

from playwright.sync_api import sync_playwright
import pandas as pd 

url = "https://www.g2g.com/categories/wow-classic-tbc-gold-for-sale?region_id=ac3f85c1-7562-437e-b125-e89576b9a38e"

def store_data(items):
    data = pd.DataFrame(items) 
    data.to_csv("data.csv", index=False)

with sync_playwright() as p:
    def handle_response(response): # the endpoint we are insterested in
        if ("/search?" in response.url):
            items = response.json()["payload"]["results"]
            store_data(items)
            # [print(item["title"], item["display_price"]) for item in items]

    browser = p.chromium.launch() 
    page = browser.new_page() 

    page.on("response", handle_response) 
    page.goto(url, wait_until="networkidle") 

    page.context.close() 
    browser.close() 

我 运行 上面的脚本原样是 data in CSV.

中的结果

PS 很高兴你喜欢这篇文章,我写了它 ;)