【问题标题】:Text file import on python在 python 上导入文本文件
【发布时间】:2022-02-15 00:17:23
【问题描述】:

我的问题可能已经问过,但我为我工作的场景没有得到任何帮助。

尝试了不同的方法和事情,但仍然没有运气,任何帮助将不胜感激

问题

我正在尝试从 URL https://www.sec.gov/Archives/edgar/cik-lookup-data.txt 加载文本文件,因此我可以修改数据并创建数据框。

示例:- 来自链接的数据

1188 百老汇有限责任公司:0001372374:

119 博伊西有限责任公司:0001633290:

11900 东阿蒂西亚大道有限责任公司:0001639215:

11900 哈兰路有限责任公司:0001398414:

11:11 资本公司:0001463262:

我应该得到低于输出

   Name                              | number 
   1188 BROADWAY LLC                 | 0001372374 
   119 BOISE, LLC                    | 0001633290 
   11900 EAST ARTESIA BOULEVARD, LLC | 0001639215 
   11900 HARLAN ROAD LLC             | 0001398414 
   11:11 CAPITAL CORP.               | 0001463262

我遇到了加载文本文件的第一个问题,我不断收到 403 url HTTPError: HTTP Error 403: Forbidden

参考文献:

  1. Given a URL to a text file, what is the simplest way to read the contents of the text file?
  2. Python requests. 403 Forbidden

我的代码:-

import urllib.request  # the lib that handles the url stuff

data = urllib.request.urlopen("https://www.sec.gov/Archives/edgar/cik-lookup-data.txt") # it's a file like object and works just like a file
for line in data: # files are iterable
    print (line)

【问题讨论】:

  • 有意思,不知道是不是和用户代理有关?编辑:nvm,这在你的链接中,也许是类似的东西?

标签: python dataframe urllib


【解决方案1】:

返回的错误信息是:

您的请求已被识别为自动化网络的一部分 可接受的政策之外的工具,并将被管理,直到 采取行动宣布您的流量。请声明您的 通过更新您的用户代理以包含公司特定的流量 信息。

您可以通过以下方式解决此问题:

import urllib

url = "https://www.sec.gov/Archives/edgar/cik-lookup-data.txt"
hdr = {'User-Agent': 'Your Company Name admin@domain.com'} #change as needed

req = urllib.request.Request(url, headers=hdr) 

data = urllib.request.urlopen(req, timeout=60).read().splitlines()

>>> data[:10]
[b'!J INC:0001438823:',
 b'#1 A LIFESAFER HOLDINGS, INC.:0001509607:',
 b'#1 ARIZONA DISCOUNT PROPERTIES LLC:0001457512:',
 b'#1 PAINTBALL CORP:0001433777:',
 b'$ LLC:0001427189:',
 b'$AVY, INC.:0001655250:',
 b'& S MEDIA GROUP LLC:0001447162:',
 b'&TV COMMUNICATIONS INC.:0001479357:',
 b'&VEST DOMESTIC FUND II KPIV, L.P.:0001802417:',
 b'&VEST DOMESTIC FUND II LP:0001800903:']

【讨论】:

  • 不错!您如何看待返回的错误消息?
  • try/except urlopen 并捕获并打印所有异常。
  • 不错! - 你怎么知道要使用你所做的用户代理?那里有任何标准约定吗? 403 响应是否促使您尝试这样做?我很好奇,因为我已经进行了大量的网络抓取,但还没有看到像这个工作这么简单的东西。
  • @CryptoFool:美国证券交易委员会网站上的常见问题解答。见here
  • 啊...RTFM,哈哈。谢谢
【解决方案2】:

这是不允许的 - 所以你得到 response_code = 403。 在抓取任何网页时检查 robots.txt 文件是一种很好的做法。 robots.txt 文件告诉搜索引擎爬虫,爬虫可以访问您网站上的哪些 URL。这主要用于避免请求使您的站点超载;但它不是一种将网页排除在 Google 之外的机制。

在你的情况下是https://www.sec.gov/robots.txt

【讨论】:

  • 它在robots.txt 的什么地方声明/Archives/Archives/edgar/Archives/edgar/cik-lookup-data.txt 是不允许的?我一定是忽略了它。
  • 更重要的是它说它允许Allow: /Archives/edgar/data - 通过尝试从这个端点获取一些东西来检查它
  • /Archives/edgar/data 与所请求文件的路径没有任何关系。我在 robots.txt 中没有看到任何会导致 403 的内容。我认为比robots.txt 更狡猾的事情正在发生。
  • robots.txt 本身并不能阻止对站点上特定 URL 的请求。这是搜索引擎选择尊重的一种咨询机制。它可以让您深入了解正在监视站点的哪些部分是否存在“错误”请求模式(例如,错误的 User-Agent),但任何此类机制在技术上与robots.txt 无关。无论如何,引用robots.txt 有什么好处?如果您需要某个站点的某个页面,则需要该页面。如果您看到想要被robots.txt“禁止”的页面,这应该如何改变您的方法?
猜你喜欢
  • 2013-10-23
  • 1970-01-01
  • 1970-01-01
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-25
  • 1970-01-01
相关资源
最近更新 更多