从包含存档链接的网站中提取URL

时间:2017-06-01 10:20:33

标签: python beautifulsoup web-crawler

我正在抓取一个新闻网站,以提取所有链接,包括新闻网站的典型链接。网站here有一个按钮View More Stories,可以加载更多网站文章。现在这个代码在下面

def find_urls():
start_url = "e.vnexpress.net/news/business"
r = requests.get("http://" + start_url)
data = r.text
soup = BeautifulSoup(data, "html.parser")
links = soup.findAll('a')
url_list = []
for url in links:
    all_link = url.get('href')
    if all_link.startswith('http://e.vnexpress.net/news/business'):
        url_list.append(all_link)
return set(url_list)

成功加载了不少网址,但如何在这里加载更多按钮的片段

<a href="javascript:void(0)" id="vnexpress_folder_load_more" data-page="2"
                           data-cate="1003895">
                            View more stories
                        </a>

有人能帮助我吗?感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用像selenium这样的浏览器点击按钮,直到按钮消失或禁用。最后,你可以一次性使用beautifulsoup刮掉整个页面。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

#initializing browser
driver = webdriver.Firefox()
driver.set_window_size(1120, 550)

driver.get("http://e.vnexpress.net/news/news")

# run this till button is present
elem = driver.find_element_by_id('vnexpress_folder_load_more'))
elem.click()