当我在 Google 或 Stackoverflow 上查找我的问题时,似乎解决了六个这样的案例,但我似乎从未真正理解解决方案。
因此,我想从使用 Anaconda 启动的 Jupyter Lab 的服务器上抓取.csv 文件。这个文件确实存在,我只需点击几下就可以下载它。
现在我尝试执行以下查询:
import pandas as pd
pd.read_csv("link")
Run Code Online (Sandbox Code Playgroud)
它产生以下错误:
---------------------------------------------------------------------------
HTTPError Traceback (most recent call last)
<ipython-input-37-aae59f2238c3> in <module>
----> 1 pd.read_csv("https://first-python-notebook.readthedocs.io/_static/committees.csv")
/Applications/anaconda3/lib/python3.7/site-packages/pandas/io/parsers.py in parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, dialect, error_bad_lines, …Run Code Online (Sandbox Code Playgroud) 运行以下代码时出现错误。这是我用于网页抓取。
from requests_html import HTMLSession
url = 'https://www.beerwulf.com/en-gb/c/beers?segment=Beers&catalogCode=Beer_1'
s = HTMLSession()
r = s.get(url)
r.html.render(sleep=1)
print(r.status_code)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
Traceback (most recent call last):
File "c:/Python/Python385/web_scraping/task1.py", line 8, in <module>
r.html.render(sleep=1)
File "C:\Python\Python385\lib\site-packages\requests_html.py", line 598, in render
content, result, page = self.session.loop.run_until_complete(self._async_render(url=self.url,
script=script, sleep=sleep, wait=wait, content=self.html, reload=reload, scrolldown=scrolldown,
timeout=timeout, keep_page=keep_page))
File "C:\Python\Python385\lib\asyncio\base_events.py", line 616, in run_until_complete
return future.result()
File "C:\Python\Python385\lib\site-packages\requests_html.py", line 512, in _async_render
await page.goto(url, options={'timeout': int(timeout * 1000)})
File "C:\Python\Python385\lib\site-packages\pyppeteer\page.py", line 885, in goto
raise error
pyppeteer.errors.TimeoutError: Navigation Timeout Exceeded: …Run Code Online (Sandbox Code Playgroud) 我已经使用 Google Cloud 几个星期了,但由于我有限的 GCP 知识,我面临着一个大问题。
我有一个 python 项目,其目标是使用其 API 从网站“抓取”数据。我的项目在执行过程中运行了数万个请求,并且可能需要很长时间(几个小时,也许更多)
我的项目中有 4 个 python 脚本,它们都是由 bash 脚本编排的。
执行如下:
现在我想摆脱那个 bash 脚本,并且我想自动执行这些脚本。一个星期一次。
这里的问题是执行时间。这是我已经测试过的:
Google App Engine:GAE 上的请求超时限制为 10 分钟,而我的函数可以运行几个小时。GAE 在这里不可用。
Google 计算引擎:我的脚本最多可以运行。每周 10-15 小时,在这段时间里保持计算引擎运行的成本太高了。
我可以做什么来在云环境中自动执行脚本?在不更改代码的情况下,我没有想到的解决方案可能是什么?
谢谢
python google-app-engine google-compute-engine google-cloud-platform google-cloud-run
希望你一切都好。
我在尝试设置 chrome webdriver 时遇到了一些问题。我正在尝试更改网络驱动程序的参数以轮换用户代理和 IP(我将其用于抓取目的并且不想获得具有相同 IP 和 UA 的位置)。
当我通过 UA 参数时,一切正常。但是当我添加 IP 参数时,由于某些我无法识别的原因,它系统性地失败了。我总是收到以下错误
WebDriverException: unknown error: net::ERR_TUNNEL_CONNECTION_FAILED
(Session info: chrome=86.0.4240.198)```
Run Code Online (Sandbox Code Playgroud)
行为始终相同,驱动程序根据请求打开网页,然后页面加载一段时间,直到指示该站点无法访问。
下面是使用的代码。你知道它来自哪里吗?(不幸的是,我无法找到类似的帖子)
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
opts = Options()
user_agent = 'Mozilla/5.0 CK={} (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko'
PROXY = '176.9.119.170:8080'
opts.add_argument("user-agent="+user_agent)
opts.add_argument("--proxy-server=%s" % PROXY)
driver = webdriver.Chrome(executable_path='XXXXXXXX', options=opts)
driver.get('https://www.expressvpn.com/what-is-my-ip')
user_agent_check = driver.execute_script("return navigator.userAgent;")
print(user_agent_check)
Run Code Online (Sandbox Code Playgroud)
下面回溯
# Licensed to the Software Freedom Conservancy (SFC) under one
# or more contributor license …Run Code Online (Sandbox Code Playgroud) 我正在使用 beautiful soup 抓取网站数据。我想要以下的锚点值(我的名字是昵称)。但我在谷歌上搜索了很多,但找不到任何完美的解决方案来解决我的查询。
news_panel = soup.findAll('div', {'class': 'menuNewsPanel_MenuNews1'})
for news in news_panel:
temp = news.find('h2')
print temp
Run Code Online (Sandbox Code Playgroud)
输出 :
<h2 class="menuNewsHl2_MenuNews1"><a href="index.php?ref=MjBfMDFfMDhfMTRfMV84XzFfOTk2NDA=">My name is nick</a></h2>
Run Code Online (Sandbox Code Playgroud)
但我想要这样的输出: My name is nick
我想刮一堆页面。提供不同的数据罐,然后进行匹配。
[Page1]-Get-PostProcessing-Store-[Pot1]-+
[Page2]-Get-PostProcessing-Store-[Pot2]-+--Match---[ResultPage]-REST-API
[Page3]-Get-PostProcessing-Store-[Pot3]-+
...
Run Code Online (Sandbox Code Playgroud)
现在我想尽可能独立考虑每个页面的管道。有时页面需要 JavaScript 抓取功能,有时不需要。有时我还需要抓取图像,有时只需要抓取 PDF。
我用一页和 Scrapy 做了一个原型。我真的有结构,我不知道如何“拆分”它,因为每个页面的刮板和中间件都是独立的。另一方面,lxml 足够了吗?如何处理机器人并等待延迟以避免阻塞?添加消息队列有意义吗?
实现这一切的最佳方法是什么?请具体点!我的主要问题是组织代码的结构和要使用的工具。
是否有一个node/npm模块可以抓取网页或给定 URL 的内容并执行和评估它的 JavaScript 作为现实生活中的 Web 浏览器,包括XMLHttpRequest对象等?
我认为scraperjs是解决方案,但遗憾的是它不是。
非常感谢所有帮助!
我有一个网页抓取脚本,它正在处理数千个链接。但有时我会收到连接错误、超时错误、网关错误错误,而我的脚本只是停止..
这是我的部分代码(在 url 中,我得到了我循环运行的链接):
def scrape(urls):
browser = webdriver.Firefox()
datatable=[]
for url in urls:
browser.get(url)
html = browser.page_source
soup=BeautifulSoup(html,"html.parser")
table = soup.find('table', { "class" : "table table-condensed table-hover data-table m-n-t-15" })
Run Code Online (Sandbox Code Playgroud)
我想我必须使用 try-catch 方法来避免它,如果它发生了,请再试一次阅读这个网站。
我的问题是我必须在我的代码中构建的位置和内容,以捕获这些错误并重试/转到下一个链接?
try:
r = requests.get(url, params={'s': thing})
except requests.exceptions.RequestException:
# what i have to write plus and where i have to place correctly this part?
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在尝试使用 excel vba 网站抓取从“https://in.tradingview.com/symbols/NSE-ABB/technicals/”获取数据,尽管我收到了响应,但 body.innerHTML 未显示所需的表格,但在 Chrome 中,如果我检查页面,我可以看到带有名称的表格。
代码有什么问题吗?
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", URL, False
.send
sResponse = StrConv(.responseBody, vbUnicode)
End With
sResponse = Mid$(sResponse, InStr(1, sResponse, "<!DOCTYPE "))
WriteTxtFile sResponse
With html
.body.innerHTML = sResponse
Set tElementC = .getElementsByClassName("table-1i1M26QY- maTable-27Z4Dq6Y- tableWithAction-2OCRQQ8y-")(0).getElementsByTagName("td")
End With
Run Code Online (Sandbox Code Playgroud)
URL --> https://in.tradingview.com/symbols/NSE-ABB/technicals/ 要访问的类名 = "table-1i1M26QY- maTable-27Z4Dq6Y- tableWithAction-2OCRQQ8y-"
我需要在 Node-red 中抓取一个网站,但我不确定应该如何做。
我知道如何在 Google 电子表格中抓取网站,但我不知道如何对 node-red 中的 html 节点执行相同的操作。
这是我在 Google 电子表格中使用的:
=index(importxml("https://www.website.dom";"//h2[@class='item-title']");1)
web-scraping ×6
python ×5
python-3.x ×2
anaconda ×1
browser ×1
debian ×1
excel ×1
html ×1
javascript ×1
node-red ×1
node.js ×1
pandas ×1
proxy ×1
scrapy ×1
selenium ×1
try-catch ×1
user-agent ×1
vba ×1