【问题标题】:Python web scraper moving to next page issue with SeleniumPython web scraper 移动到 Selenium 的下一页问题
【发布时间】:2021-05-05 16:22:13
【问题描述】:

这是交易。我要抓取 257 页数据。我写了一个简单的代码,它使用 selenium 打开网站,抓取第一页的必要文本。一切正常,创建了我需要的数据框,一切都很好。代码如下:

url = 'www.sampleurl.com'
driver.get(url)
driver.set_window_size(800,500)


name = driver.find_elements_by_class_name('pflist-itemtitle')
address = driver.find_elements_by_class_name('pflist-address')
contact = driver.find_elements_by_css_selector("a[href*='tel:']")


name_list = []
for a in range(len(dealer_name)):
    name_list.append(name[a].text)

address_list = []
for b in range(len(address)):
    address_list.append(address[b].text)

contact_list = []
for c in range(len(contact)):
    contact_list.append(contact[c].text)



data_tuples = list(zip(name_list[0:], address_list[0:], contact_list[0:])) # everything is paired together
temp_df = pd.DataFrame(data_tuples, columns=['Dealer Name', 'Address', 'Contact']) #creates temporary dataframe of each tuple in the field_listingtype
df = df.append(temp_df)


print('Scraping done on this page')
print('moving to next page')

我无法找到与 selenium 一起使用的 Next 按钮的好 ID,单击并移至下一页以重复该过程,等等接下来的 257 页。

我正在查看 f' 字符串以在 url 中所需位置传递页码,但我被卡住了。任何指针将不胜感激:

def new_page():
        
    for page in range(2,257):

        next_page = f'https://www.samplepage.com/page/{THIS IS WHERE PAGE# WOULD BE INSERTED}/?field_listingtype=104&field527110067894682300000%5B0%5D=215&field527110067894682300000%5B1%5D=203&field527110067894682300000%5B2%5D=212&field527110067
        driver.get(next_page)
        print(page)

【问题讨论】:

  • 如何手动跳转到下一页?

标签: python selenium web-scraping


【解决方案1】:

如果我理解正确的话,你已经很接近了……

for page in range(2,257):
    next_page = f'https://www.samplepage.com/page/{page}/?field_listingtype=104&field527110067894682300000%5B0%5D=215&field527110067894682300000%5B1%5D=203&field527110067894682300000%5B2%5D=212&field527110067'
    print(next_page)

https://www.samplepage.com/page/2/?field_listingtype=104&field527110067894682300000%5B0%5D=215&field527110067894682300000%5B1%5D=203&field527110067894682300000%5B2%5D=212&field527110067
https://www.samplepage.com/page/3/?field_listingtype=104&field527110067894682300000%5B0%5D=215&field527110067894682300000%5B1%5D=203&field527110067894682300000%5B2%5D=212&field527110067
https://www.samplepage.com/page/4/?field_listingtype=104&field527110067894682300000%5B0%5D=215&field527110067894682300000%5B1%5D=203&field527110067894682300000%5B2%5D=212&field527110067
https://www.samplepage.com/page/5/?field_listingtype=104&field527110067894682300000%5B0%5D=215&field527110067894682300000%5B1%5D=203&field527110067894682300000%5B2%5D=212&field527110067
https://www.samplepage.com/page/6/?field_listingtype=104&field527110067894682300000%5B0%5D=215&field527110067894682300000%5B1%5D=203&field527110067894682300000%5B2%5D=212&field527110067
.....

顺便说一句,找出 next 按钮问题可能比在 257 个 URL 上执行 get() 更好,但如果您选择该路线,上述内容将让您到达那里

【讨论】:

  • 问题似乎是:AttributeError: 'list' object has no attribute 'click'。感谢您的回复,但是,我如何让驱动程序真正进入下一页和下一页,而不仅仅是打印页面?
  • 所以你有一个 List 类型的元素?您需要循环并单独单击它们。你不能直接点击它。但是,Next 按钮将是一个列表是没有意义的。
  • 我知道是对的。按钮本身,有一个类。我尝试了各种方式,按类名,按类查找元素,但是它出现了该错误。它在类旁边有一个href。显然,如果我能弄清楚如何单击下一个按钮并以此方式进入下一页,那将是最好的。
  • 我认为您应该编辑您的问题,或者删除它并重新开始,并使用相关代码和 HTML 关注下一个按钮问题。传递 257 个 URL 不是一个好方法。
猜你喜欢
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-29
  • 2021-06-01
  • 1970-01-01
相关资源
最近更新 更多