Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python和selenium来刮取动态网页_Python_Selenium - Fatal编程技术网

使用python和selenium来刮取动态网页

使用python和selenium来刮取动态网页,python,selenium,Python,Selenium,在该站点的顶部有几个链接,分别标记为1、2、3和next。如果按下标有数字的链接,它会将一些数据动态加载到contentdiv。如果按下next(下一步),它将转到标签为4、5、6、next的页面,并显示第4页的数据 我想从contentdiv中为所有按下的链接刮取数据(我不知道有多少个,它一次只显示3个,下一个) 请举例说明如何做。例如,考虑站点www. cNET.com < /p> 请引导我下载使用selenium的一系列页面,并对其进行解析,以便我自己处理beautiful soup。总体

在该站点的顶部有几个链接,分别标记为1、2、3和next。如果按下标有数字的链接,它会将一些数据动态加载到content
div
。如果按下next(下一步),它将转到标签为4、5、6、next的页面,并显示第4页的数据

我想从content
div
中为所有按下的链接刮取数据(我不知道有多少个,它一次只显示3个,下一个)

请举例说明如何做。例如,考虑站点www. cNET.com < /p> 请引导我下载使用selenium的一系列页面,并对其进行解析,以便我自己处理beautiful soup。

总体布局(未经测试):

#/usr/bin/env python
从上下文库导入关闭
从selenium.webdriver导入Firefox#pip安装selenium
url=”http://example.com"
#使用firefox获取包含javascript生成内容的页面
关闭(Firefox())作为浏览器时:
n=1
当n<10时:
browser.get(url)#加载页面
link=浏览器。通过链接文本(str(n))查找元素
而链接:
browser.get(link.get_属性(“href”))#获取单个1,2,3,4页
####保存(浏览器页面\源)
back()#返回到具有1,2,3类似下一个链接的页面
n+=1
link=浏览器。通过链接文本(str(n))查找元素
链接=浏览器。通过链接文本(“下一步”)查找元素
如果没有链接:断开
url=link.get_属性(“href”)

Selenium有很好的教程,这将是一个很好的起点。dm03514是对的,这可能不是提出这样一个一般性问题的合适地方。这篇文章很有帮助,但我需要根据类名查找元素。@user1118534:并指定顶部标记为“1”、“2”、“3”和“next”的
链接在您的案例中的含义(如果您不确定,只需发布链接的html:
)。您可以使用
浏览器。通过类名称(classname)查找元素
要按类名查找元素。我正在学习刮取使用java脚本的网站作为学习的一部分。目前,我想刮取网站www.cnet.com中所有HP笔记本电脑的编辑评论和用户评论。按照步骤转到所需页面。转到www.cnet.com,然后单击评论,然后转到笔记本电脑然后查看所有品牌。选中HP复选框,并在所有页面(如1、2、3、4等)中为每台笔记本电脑选择。在顶部抓取编辑和用户评论是我的目标。如果您能指导我这样做,我将非常感激this@koushik:1.确保他们的TOS允许此类使用。2.若要转到第三页,您可以使用:。若要获取评论,请保存
浏览器。page_source
为每个1、2、3、4、5等页面创建一个页面,并在以后解析它们以获得链接。3.如果可用,使用RSS或API而不是抓取可能会更简单。非常感谢。我会尝试一下,如果我有任何问题,我会回复你。非常感谢
#!/usr/bin/env python
from contextlib import closing
from selenium.webdriver import Firefox # pip install selenium

url = "http://example.com"

# use firefox to get page with javascript generated content
with closing(Firefox()) as browser:
    n = 1
    while n < 10:
        browser.get(url) # load page
        link = browser.find_element_by_link_text(str(n))
        while link:
           browser.get(link.get_attribute("href")) # get individual 1,2,3,4 pages
           #### save(browser.page_source)
           browser.back() # return to page that has 1,2,3,next -like links
           n += 1
           link = browser.find_element_by_link_text(str(n))

        link = browser.find_element_by_link_text("next")
        if not link: break
        url = link.get_attribute("href")