【问题标题】:how to grap data from a local website with python如何使用python从本地网站获取数据
【发布时间】:2019-07-29 19:03:41
【问题描述】:

我需要提示如何从网站获取数据。我对网络抓取很陌生。特别是我无法访问该网站,因为它在另一个网络上本地运行。对于开发,我只有网站作为 html 文件。知道我的问题是我的以下代码出错。我认为问题很简单,但到目前为止我还没有一个想法。

import requests
import urllib.request
import time
from bs4 import BeautifulSoup

url = 'file:///tmp/mozilla/LiveData.html' # file is locally so far
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

我收到以下错误:

NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7fc151db7550>: Failed to establish a new connection: [Errno -2] Name or service not known

当它是本地网站而不是“真实”网站时,它可能不起作用。感谢您的帮助!

【问题讨论】:

  • 您不能在本地文件上使用.get。而是使用open 读取文件

标签: python web-scraping beautifulsoup get


【解决方案1】:

您不能在本地文件上使用.get 方法。先读取文件再传给bs4.
你可以用这样的东西来实现类似的事情。 示例:

import requests
import urllib.request
import time
from bs4 import BeautifulSoup

# url = 'file:///tmp/mozilla/LiveData.html' # file is locally so far
with open('/tmp/mozilla/LiveData.html', 'r') as f:
    response = f.read()
soup = BeautifulSoup(response.text, "html.parser")

【讨论】:

    【解决方案2】:

    requests.get 在向 URL 发送 get 请求后返回来自网站的响应。由于您的网站只是一个本地文件,而不是实时运行(并侦听请求),因此它不会从 get 请求中返回任何内容。

    requests.get(url, params=None, **kwargs)[source] 发送 GET 请求。

    参数: url – 新请求对象的 URL。参数 -(可选) 字典,要在查询字符串中发送的元组或字节列表 请求。 **kwargs – 请求采用的可选参数。返回:响应对象

    返回类型:requests.Response

    【讨论】:

    • 感谢您的快速回答,还有一个问题需要理解,如果网站正在运行,那么我只需用 .get 命令替换 Poojan 解决方案,对吗?
    • 您的网站还需要侦听传入请求才能提供响应。我假设您有一些烧瓶服务器将侦听获取请求,然后返回适当的响应。这是一个有用的烧瓶教程:pythonprogramming.net/flask-get-post-requests-handling-tutorial
    猜你喜欢
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-01
    • 2020-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多