Python 从包含存档链接的网站提取URL
我正在抓取一个新闻网站,以提取所有链接,包括新闻网站典型的归档链接。该网站有一个按钮Python 从包含存档链接的网站提取URL,python,beautifulsoup,web-crawler,Python,Beautifulsoup,Web Crawler,我正在抓取一个新闻网站,以提取所有链接,包括新闻网站典型的归档链接。该网站有一个按钮查看更多故事,可加载更多网站文章。下面是代码 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') ur
查看更多故事
,可加载更多网站文章。下面是代码
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)
成功加载了不少url,但如何加载更多呢?这里是按钮的一个片段
<a href="javascript:void(0)" id="vnexpress_folder_load_more" data-page="2"
data-cate="1003895">
View more stories
</a>
有人能帮帮我吗。谢谢。您可以使用类似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()
加载更多来自
post
请求的故事。因此,首先构造下一页url,然后执行post
request,这是您的下一页url。您需要传递2个参数cate_id
和page
@akashkarothiya您能给我更多解释吗?当做是的,很好,这很有效。但是我怎样才能让它运行几次呢?我发现它只对一个人有效。我试图从文档中阅读有关selenium的内容,但找不到相关内容。@Jeremiah您能解释一下您希望它如何运行吗?根据我的理解,元素。单击()
加载下一页。我想让它实现的是继续重复运行,直到我指定一个条件,让它在爬行大约100个url后停止。