伙计们,我需要写一个脚本,使用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
但程序只是停止下载第一页。有人能帮忙吗?谢谢。你知道吗
所以有一些事情导致了这种情况。你知道吗
我认为引起你问题的第一个原因是:
当我去那个网站的时候,我想你只是想:
第二个错误是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,当它没有获取任何内容时停止。你知道吗
相关问题 更多 >
编程相关推荐