- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Python、Selenium、Sublime 和 Firefox:我正在从这个网站上抓取链接,并想将抓取的页面(作为 html 文件)保存到一个文件夹中。但是,我已经工作了好几天,试图将这些 html 文件的主体转储到保管箱文件夹中。问题是 1) 保存 html 文件和 2) 将它们保存到保管箱文件夹(或任何文件夹)。
我已经成功编写了执行搜索的代码,然后从一系列网页中删除链接。以下代码适用于此。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import re
import csv
import pickle
import signal
import time
def handler(signum, frame):
raise Exception('Last Resort!')
signal.signal(signal.SIGALRM,handler)
def isReady(browser):
return browser.execute_script("return document.readyState")=="complete"
def waitUntilReady(browser):
if not isReady(browser):
waitUntilReady(browser)
def waitUntilReadyBreak(browser_b,url,counter):
try:
signal.alarm(counter)
waitUntilReady(browser_b)
signal.alarm(0)
except Exception,e:
print e
signal.alarm(0)
browser_b.close()
browser_b = webdriver.Firefox()
browser_b.get(url)
waitUntilReadyBreak(browser_b,url,counter)
return browser_b
browser = webdriver.Firefox()
thisurl = 'http://www.usprwire.com/cgi-bin/news/search.cgi'
browser.get(thisurl)
waitUntilReady(browser)
numarticles = 0
elem = WebDriverWait(browser, 60).until(EC.presence_of_element_located((By.NAME, "query")))
elem = browser.find_element_by_name("query")
elem.send_keys('"test"')
form = browser.find_element_by_xpath("/html/body/center/table/tbody/tr/td/table/tbody/tr[3]/td/table/tbody/tr[3]/td[2]/table/tbody/tr[3]/td/table/tbody/tr[1]/td/font/input[2]").click()
nextpage = False
all_newproduct_links = []
npages = 200
for page in range(1,npages+1):
if page == 1:
elems = browser.find_elements_by_tag_name('a')
article_url = [elems.get_attribute("href")
for elems in browser.find_elements_by_class_name('category_links')]
print page
print article_url
print "END_A_PAGE"
elem = browser.find_element_by_link_text('[>>]').click()
waitUntilReady(browser)
if page >=2 <= 200:
# click the dots
print page
print page
print "B4 LastLoop"
elems = WebDriverWait(browser, 60).until(EC.presence_of_element_located((By.CLASS_NAME, "category_links")))
elems = browser.find_elements_by_tag_name('a')
article_url = [elems.get_attribute("href")
for elems in browser.find_elements_by_class_name('category_links')]
print page
print article_url
print "END_C_PAGE"
# This is the part that will not work :(
for e in elems:
numarticles = numarticles+1
numpages = 0
numpages = numpages+1000
article_url = e.get_attribute('href')
print 'waiting'
bodyelem.send_keys(Keys.COMMAND + "2")
browser.get(article_url)
waitUntilReady(browser)
fw = open('/Users/My/Dropbox/MainFile/articlesdata/'+str(page)+str(numpages)+str(numarticles)+'.html','w')
fw.write(browser.page_source.encode('utf-8'))
fw.close()
bodyelem2 = browser.find_elements_by_xpath("//body")[0]
bodyelem2.send_keys(Keys.COMMAND + "1")
上面的 (for e in elems:
) 是为了点击页面并创建一个包含抓取页面主体的 html 文件。我似乎缺少一些基本的东西。
任何指导都将不胜感激。
最佳答案
我认为你过于复杂了。
此 block 中至少存在一个问题:
elems = browser.find_elements_by_tag_name('a')
article_url = [elems.get_attribute("href")
for elems in browser.find_elements_by_class_name('category_links')]
elems
将包含由 find_elements_by_tag_name()
找到的元素列表,但是随后,您在列表中使用相同的 elems
变量理解。因此,当您稍后迭代 elems
时,您会收到错误,因为 elems
现在指的是单个元素而不是列表。
无论如何,这是我会采取的方法:
_Iran_Shipping_Report_Q4_2014_is_now_available_at_Fast_Market_Research_326303.shtml
将是文章文件名代码:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
def isReady(browser):
return browser.execute_script("return document.readyState") == "complete"
def waitUntilReady(browser):
if not isReady(browser):
waitUntilReady(browser)
browser = webdriver.Firefox()
browser.get('http://www.usprwire.com/cgi-bin/news/search.cgi')
# make a search
query = WebDriverWait(browser, 60).until(EC.presence_of_element_located((By.NAME, "query")))
query.send_keys('"test"')
submit = browser.find_element_by_xpath("//input[@value='Search']")
submit.click()
# grab article urls
npages = 4
article_urls = []
for page in range(1, npages + 1):
article_urls += [elm.get_attribute("href") for elm in browser.find_elements_by_class_name('category_links')]
browser.find_element_by_link_text('[>>]').click()
# iterate over urls and save the HTML source
for url in article_urls:
browser.get(url)
waitUntilReady(browser)
title = browser.current_url.split("/")[-1]
with open('/Users/My/Dropbox/MainFile/articlesdata/' + title, 'w') as fw:
fw.write(browser.page_source.encode('utf-8'))
关于python - 抓取 : scraped links - now unable to scrape and dump html files into a folder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30365315/
虽然 HTML Scraping 从我所看到的内容中得到了很好的记录,并且我了解它的概念和实现,但是从隐藏在身份验证表单后面的内容中进行抓取的最佳方法是什么。我指的是从我合法访问的内容中抓取,因此我正
使用 Python、Selenium、Sublime 和 Firefox:我正在从这个网站上抓取链接,并想将抓取的页面(作为 html 文件)保存到一个文件夹中。但是,我已经工作了好几天,试图将这些
我需要构建一个 python 脚本,旨在抓取网页以检索“显示更多”按钮中的数字。 此数字将用作请求 URL 的参数,该 URL 将返回包含数据 + 数字的 JSON。最后一个数字将用作请求 URL 的
当 Google map 在某种程度上确认某个地点搜索时,它会重定向到特定的 Google 地点 url,否则它会返回 map 搜索结果页面。 谷歌地图搜索“manarama”是 https://ww
每当我想在 amazon.com 上抓取时,我都会失败。因为产品信息会根据 amazon.com 中的位置而变化 这个变化信息如下; 1-价格 2-运费 3-海关费用 4-发货状态 用selenium
我正在使用scrapy来抓取网站,现在我需要设置代理处理已发送的请求。谁能帮我在scrapy应用程序中解决这个设置代理。如果有,也请提供任何示例链接。我需要解决这个请求来自哪个 IP 的问题。 最佳答
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 2年前关闭。 Improve thi
我想知道是否有任何技术可以识别收集信息以供非法使用的网络爬虫。通俗地说,数据盗窃是为了创建一个网站的副本。 理想情况下,该系统会检测来自未知来源的抓取模式(如果 Google 抓取工具不在列表中,等等
我想编写一个抓取脚本来检索cnn文章中的评论。例如,本文:http://www.cnn.com/2012/01/19/politics/gop-debate/index.html?hpt=hp_t1
我正在尝试构建Instagram帐户的Microsoft Access数据库,并希望提取以下数据以及其他信息: 帐户名 关注者数量 关注的人数 帖子数(及其日期) 图片的赞数 图片上的评论数量 我在构
我正在尝试运行一个爬虫,其输出日志如下所示: 2017-04-25 20:22:22 [scrapy.spidermiddlewares.httperror] INFO: Ignoring respo
我想抓取一个网站,该网站的网页上有他们商店的所有联系方式,我可以手动记下这些信息,因此抓取该网站是合法的还是非法的。 最佳答案 是的,除非您不道德地使用它。 Web 抓取就像世界上的任何工具一样。您可
假设我有以下 html: I am going by flying mr tt 文本节点中任何等于或大
寻找任何工具(最好在 python 中)来提取特定网页收到的浏览次数。如果没有,也很方便知道我是否可以获得任何其他网页特定的分析(例如列出的那个) 最佳答案 除非您拥有此特定网页,否则无法查看它获得了
我刚刚开始研究这个,我想将我的 Netgear 路由器 ( http://192.168.0.1/setup.cgi?next_file=stattbl.htm ) 统计数据刮到一个 csv 文件中。
我目前是开发包含前端客户端的应用程序的团队的一员。 我们通过这个客户端发送用户数据,每个用户都有一个用户 ID,客户端通过 RESTful API 与我们的服务器对话,向服务器询问数据。 例如,假设我
有谁知道我如何轻松下载所有已发表的文章摘要?我正在做一个文本挖掘项目。 我能找到的最接近的一个可以在给定 pmid 的情况下一次下载一个摘要,但这对我的目的来说太慢了,因为我必须一次下载一个。 最佳答
当我使用Beautiful Soup发出请求时,我被阻止为“机器人”。 import requests from bs4 import BeautifulSoup reddit1Link = requ
由于网站抓取 Google、Bing 等违反了他们的服务条款,我想知道是否有任何搜索引擎可以抓取结果? 最佳答案 为什么要刮?为什么不使用支持的 API? http://code.google.com
许多页面(facebook、google+ 等)都有一个功能,可以创建带有标题、图像和来自链接的一些文本的摘要。我试图找出是否有任何关于如何执行此类功能的库或指南,但我的搜索结果根本没有帮助。 我知道
我是一名优秀的程序员,十分优秀!