【问题标题】:Bypass anti scraper that changes the suffix of a url when looping through many urls绕过多个 url 时更改 url 后缀的反爬虫
【发布时间】:2021-07-23 16:38:02
【问题描述】:

我已经构建了一个具有父 URL 和许多子 URL 的爬虫。我用孩子们的 url 建立了一个列表,并循环遍历它 - 都是 https-。但是,当我到达循环的第二个对象时,它会添加一个后缀 (?Nao=0) 并再次抓取父对象。

我在下面说明:

links_products = ['https://www.target.com/c/grocery-deals/-/N-5xt0rZ55e6uZ55e69Z55e6tZ5tdv0r&Nao=24',
                  'https://www.target.com/c/grocery-deals/-/N-5xt0rZ55e6uZ55e69Z55e6tZ5tdv0r&Nao=48', 
                  'https://www.target.com/c/grocery-deals/-/N-5xt0rZ55e6uZ55e69Z55e6tZ5tdv0r&Nao=72']


from selenium import webdriver 

driver = webdriver.Chrome('/home/chromedriver')

for i in links_products:
    driver.get(i) 
    print(driver.current_url)  

结果 - 在每个 url 的末尾添加了 '?Nao=0'-。

https://www.target.com/c/grocery-deals/-/N-5xt0rZ55e6uZ55e69Z55e6tZ5tdv0r&Nao=24?Nao=0
https://www.target.com/c/grocery-deals-/N-5xt0rZ55e6uZ55e69Z55e6tZ5tdv0r&Nao=48?Nao=0
https://www.target.com/c/grocery-deals-/N-5xt0rZ55e6uZ55e69Z55e6tZ5tdv0r&Nao=72?Nao=0

我已经尝试添加

driver.execute_script('window.history.go(-1)')
driver.refresh()
print(driver.current_url)

然后它会打印出我真正想要抓取的网址:

https://www.target.com/c/grocery-deals/-/N-5xt0rZ55e6uZ55e69Z55e6tZ5tdv0r&Nao=24
https://www.target.com/c/grocery-deals/-/N-5xt0rZ55e6uZ55e69Z55e6tZ5tdv0r&Nao=48
https://www.target.com/c/grocery-deals/-/N-5xt0rZ55e6uZ55e69Z55e6tZ5tdv0r&Nao=72

但是只刮了上面三个链接的父级的三倍,即:
https://www.target.com/c/grocery-deals/-/N-5xt0rZ55e6uZ55e69Z55e6tZ5tdv0r

关于如何绕过此问题的任何建议?

ps。如上所述,如果我通过循环或单击“下一步”按钮,则相同。这一切都回到了父母身上。

【问题讨论】:

    标签: python web-scraping


    【解决方案1】:

    试试这些网址:

    https://www.target.com/c/grocery-deals/-/N-5xt0rZ55e6uZ55e69Z55e6tZ5tdv0r&Nao=0?Nao=24 
    

    保留 Nao=0 并修改 ?Nao=... 之后的那个

    它对我有用

    【讨论】:

    • 它没有......经过一些迭代后,它再次“出错”......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 2021-04-15
    相关资源
    最近更新 更多