首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python crawler ieee论文关键字

python crawler ieee论文关键字
EN

Stack Overflow用户
提问于 2019-02-19 23:33:44
回答 2查看 318关注 0票数 1

我试图使用爬虫来获取ieee论文关键字,但现在我得到一个错误,如何才能修复我的爬虫?我的代码在这里

代码语言:javascript
复制
import requests
import json
from bs4 import BeautifulSoup
ieee_content = requests.get("http://ieeexplore.ieee.org/document/8465981", timeout=180)
soup = BeautifulSoup(ieee_content.text, 'xml')
tag = soup.find_all('script')
for i in tag[9]:
    s = json.loads(re.findall('global.document.metadata=(.*;)', i)[0].replace("'", '"').replace(";", ''))

错误就在这里

代码语言:javascript
复制
Traceback (most recent call last):
  File "G:/github/爬蟲/redigg-leancloud/crawlers/sup_ieee_keywords.py", line 90, in <module>
    a.get_es_data(offset=0, size=1)
  File "G:/github/爬蟲/redigg-leancloud/crawlers/sup_ieee_keywords.py", line 53, in get_es_data
    self.get_data(link=ieee_link, esid=es_id)
  File "G:/github/爬蟲/redigg-leancloud/crawlers/sup_ieee_keywords.py", line 65, in get_data
    s = json.loads(re.findall('global.document.metadata=(.*;)', i)[0].replace(";", '').replace("'", '"'))
IndexError: list index out of range
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-20 01:31:51

这是另一个答案。我不知道在我的代码中加载(替换)之后,您在代码中对“%s”做了什么。

下面的代码没有抛出错误,但再次说明如何使用“%s”

代码语言:javascript
复制
import requests
import json
from bs4 import BeautifulSoup

ieee_content = requests.get("http://ieeexplore.ieee.org/document/8465981", timeout=180)
soup = BeautifulSoup(ieee_content.text, 'xml')
tag = soup.find_all('script')

# i is a list
for i in tag[9]:
   metadata_format = re.compile(r'global.document.metadata=.*', re.MULTILINE)
   metadata = re.findall(metadata_format, i)
   if len(metadata) != 0:
      # convert the list 
      convert_to_json = json.dumps(metadata)
      x = json.loads(convert_to_json)
      s = x[0].replace("'", '"').replace(";", '')
      ###########################################
      # I don't know what you plan to do with 's'
      ###########################################
      print (s)
票数 1
EN

Stack Overflow用户

发布于 2019-02-19 23:40:05

显然,在第65行,i中提供的一些数据不适合您尝试使用的正则表达式模式。因此,您的[0]将无法工作,因为返回的数据不是合适长度的数组。

解决方案:

代码语言:javascript
复制
x = json.loads(re.findall('global.document.metadata=(.*;)', i)
if x:
    s = x[0].replace("'", '"').replace(";", ''))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54769859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档