【问题标题】:im getting empty exported file, scrapy, playwright, XHR requests我得到空的导出文件,scrapy,playwright,XHR 请求
【发布时间】:2022-01-20 17:10:29
【问题描述】:

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


导入scrapy 从 playwright.sync_api 导入 sync_playwright

类 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 句柄响应(响应): # 我们感兴趣的端点 if ("/search?" in 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 抓取和导出数据方面做得更好的东西,我将不胜感激。

【问题讨论】:

    标签: python scrapy


    【解决方案1】:

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

    根据这个想法,您可以随心所欲地扩大规模。爬取不同的页面并附加到 items 数组。或者使用“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 很高兴你喜欢这篇文章,我写的 ;)

    【讨论】:

    • 非常感谢您的文章和帮助我。在过去的几周里,我阅读了 Kouzis-Loukas 的学习爬虫书(尚未完全阅读),+10 篇文章,还观看了很多 Youtube 视频,但我发现你的最适合像我这样的新人。再次感谢你,祝你好运
    猜你喜欢
    • 2018-03-05
    • 1970-01-01
    • 2015-08-01
    • 2011-06-03
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多