小编bar*_*rny的帖子

pd.read_csv 产生 HTTPError: HTTP Error 403: Forbidden

当我在 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)

user-agent python-3.x pandas python-requests anaconda

3
推荐指数
2
解决办法
2472
查看次数

pyppeteer.errors.TimeoutError:超过导航超时:超过 8000 毫秒

运行以下代码时出现错误。这是我用于网页抓取。

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)

python web-scraping

3
推荐指数
1
解决办法
3098
查看次数

使用 Google Cloud 执行长时间运行的任务

我已经使用 Google Cloud 几个星期了,但由于我有限的 GCP 知识,我面临着一个大问题。

我有一个 python 项目,其目标是使用其 API 从网站“抓取”数据。我的项目在执行过程中运行了数万个请求,并且可能需要很长时间(几个小时,也许更多)

我的项目中有 4 个 python 脚本,它们都是由 bash 脚本编排的

执行如下:

  • 第一个脚本检查 CSV 文件,其中包含请求的所有说明,然后执行请求,将请求的所有结果保存在 CSV 文件中
  • 第二个脚本检查之前创建的 CSV 文件并重新创建另一个 CSV 指令文件
  • 第一个脚本再次运行,但使用新指令,并再次将结果保存在 CSV 文件中
  • 第二个脚本再次检查并再次执行相同操作...
  • ……如此反复几次
  • 第三个脚本清理数据、删除重复项并创建唯一的 CSV 文件
  • 第四个脚本将最终的 CSV 文件上传到存储桶

现在我想摆脱那个 bash 脚本,并且我想自动执行这些脚本。一个星期一次。

这里的问题是执行时间。这是我已经测试过的:

Google App Engine:GAE 上的请求超时限制为 10 分钟,而我的函数可以运行几个小时。GAE 在这里不可用。

Google 计算引擎:我的脚本最多可以运行。每周 10-15 小时,在这段时间里保持计算引擎运行的成本太高了。

我可以做什么来在云环境中自动执行脚本?在不更改代码的情况下,我没有想到的解决方案可能是什么?

谢谢

python google-app-engine google-compute-engine google-cloud-platform google-cloud-run

3
推荐指数
1
解决办法
2070
查看次数

Selenium 代理服务器参数 - 未知错误:net::ERR_TUNNEL_CONNECTION_FAILED

希望你一切都好。

我在尝试设置 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)

proxy selenium python-3.x selenium-webdriver

3
推荐指数
1
解决办法
3万
查看次数

使用 beautifulsoup 抓取 &lt;h2&gt; 标签

我正在使用 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

python beautifulsoup web-scraping

2
推荐指数
1
解决办法
2万
查看次数

抓取多个页面,保持独立

我想一堆页面。提供不同的数据罐,然后进行匹配。

[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 足够了吗?如何处理机器人并等待延迟以避免阻塞?添加消息队列有意义吗?

实现这一切的最佳方法是什么?请具体点!我的主要问题是组织代码的结构和要使用的工具。

python scrapy web-scraping

2
推荐指数
1
解决办法
137
查看次数

具有 JavaScript 执行功能的 Node.js Web 浏览器

是否有一个node/npm模块可以抓取网页或给定 URL 的内容并执行和评估它的 JavaScript 作为现实生活中的 Web 浏览器,包括XMLHttpRequest对象等?

我认为scraperjs是解决方案,但遗憾的是它不是。

非常感谢所有帮助!

javascript node.js

2
推荐指数
1
解决办法
5161
查看次数

连接错误,当我在 debian 上使用 Python 进行网络抓取时超时

我有一个网页抓取脚本,它正在处理数千个链接。但有时我会收到连接错误、超时错误、网关错误错误,而我的脚本只是停止..

这是我的部分代码(在 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)

谢谢!

python browser debian try-catch web-scraping

2
推荐指数
1
解决办法
1890
查看次数

Excel VBA 抓取 - HTML 表格不可见

我正在尝试使用 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-"

html excel vba web-scraping

2
推荐指数
1
解决办法
1555
查看次数

如何在 Node-red 中抓取网站

我需要在 Node-red 中抓取一个网站,但我不确定应该如何做。

我知道如何在 Google 电子表格中抓取网站,但我不知道如何对 node-red 中的 html 节点执行相同的操作。

这是我在 Google 电子表格中使用的:

=index(importxml("https://www.website.dom";"//h2[@class='item-title']");1)

web-scraping node-red

2
推荐指数
1
解决办法
7517
查看次数