python使用Selenium下载文件

2024-04-25 11:43:15 发布

您现在位置:Python中文网/ 问答频道 /正文

伙计们,我需要写一个脚本,使用selenium遍历网站上的页面,并将每个页面下载到一个文件中。 这是我需要通过的网站,我想下载所有10页的评论。 这是我的密码:

import urllib2,os,sys,time
from selenium import webdriver

browser=urllib2.build_opener()
browser.addheaders=[('User-agent', 'Mozilla/5.0')]



url='http://www.imdb.com/title/tt2948356/reviews?ref_=tt_urv'

driver = webdriver.Chrome('chromedriver.exe')
driver.get(url)

time.sleep(2)


if not os.path.exists('reviewPages'):os.mkdir('reviewPages')

response=browser.open(url)
myHTML=response.read()
fwriter=open('reviewPages/'+str(1)+'.html','w')
fwriter.write(myHTML)
fwriter.close()
print 'page 1 done'

page=2

while True:
    cssPath='#tn15content > table:nth-child(4) > tbody > tr > td:nth-child(2) > a:nth-child(11) > img'
    try:
        button=driver.find_element_by_css_selector(cssPath)
    except:
        error_type, error_obj, error_info = sys.exc_info()
        print 'STOPPING - COULD NOT FIND THE LINK TO PAGE: ', page
        print error_type, 'Line:', error_info.tb_lineno
        break

    button.click()
    time.sleep(2)

    response=browser.open(url)
    myHTML=response.read()
    fwriter=open('reviewPages/'+str(page)+'.html','w')
    fwriter.write(myHTML)
    fwriter.close()
    time.sleep(2)
    print 'page',page,'done'
    page+=1

但程序只是停止下载第一页。有人能帮忙吗?谢谢。你知道吗


Tags: browserurltimeosresponsedriverpagesleep
2条回答

所以有一些事情导致了这种情况。你知道吗

我认为引起你问题的第一个原因是:

table:nth-child(4)

当我去那个网站的时候,我想你只是想:

table >

第二个错误是except消息中的break语句。这就是说,当我得到一个错误,停止循环。你知道吗

所以所发生的是你的尝试,除了没有工作,因为你的CSS选择器不太正确,去你的异常,你告诉它停止循环。你知道吗

与其使用非常复杂的CSS路径,不如使用更简单的xpath('//a[child::img[@alt=“[Next]”]]/@href'),它将返回与每个页面上的小三角形“Next”按钮相关联的URL。你知道吗

注意,每个页面有10个评论,第2页到第10页的URL只给出开始评论的编号,即http://www.imdb.com/title/tt2948356/reviews?start=10,这是第2页的URL。只需计算下一页的URL,当它没有获取任何内容时停止。你知道吗

相关问题 更多 >