Python爬虫解决javascript:void(0)加载查看更多的解决方法

  • Post author:
  • Post category:java


无论是下拉加载更多内容还是一篇文章内容点击查看更多才能看完全文,都可以使用selenium来解决。下拉加载更多问题有两种解决方法,一种是通过查看是否有接口,通过接口获取所有内容,如果不好找到对应接口,则可以使用selenium;另外就是文章中查看更多内容,有的页面在获取htmlcode后,会显示除完整的文章内容,但是部分网站即时显示所有内容,在抓取的时候仍然获取不到整篇文章。

这里以顺企网的企业黄页内容为例,通过下图可见文字内容过多时,需要通过点击“

… 展开

”开查看更多内容。通过requests.get()获取页面后,再通过xpath来定位元素,实际得到的结果是不完整的。这个时候我们就可以使用selenium来操作了。

以下为相关代码,这里使用了find_element_by_xpath()获取内容后进行点击展开源码,而且需要增加一个判断,如果没有判断,那些内容过少的通过selenium操作,则有可能报错。

# 使用selenium 点击 a 标签javascript:void(0) 获取完整内容 再判断是否有展开.
def clickjs():
    chrome_options = Options()

    # 设置它为无框模式
    chrome_options.add_argument('--headless')
    # 如果在windows上运行需要加代码
    chrome_options.add_argument('--disable-gpu')
    browser = webdriver.Chrome(chrome_options=chrome_options)
    # 设置一个4秒的隐式等待
    browser.implicitly_wait(4)
    # 获取对应url
    browser.get('https://www.11467.com/qiye/xxxxxx.htm')
    sleep(1)

    # 拿到页面源代码
    source = browser.page_source
    if '收起' in source:
        browser.find_element_by_xpath('//div[@id="aboutuscontent"]//a').click()
        return source
    else:
        browser.find_element_by_xpath('//div[@id="aboutuscontent"]')
        return source

    # browser.quit()
htmlcode = clickjs()

本文内容仅为学习分享和笔记记录,具体详细的selenium安装和操作请自行百度,如果想验证此方法,可以找一些下拉加载内容的去操作,更能达到学习提升的目的。Python爬虫时我获取内容使用较多的为re和xpath,但并非不能使用其他规则。urllib相关库和bs4也是很好的搭配,并非要requests或者爬虫框架才行。