使用python进行Webscrapping来提取数据

时间:2017-02-10 00:34:45

标签: python-3.x web-scraping attributeerror

我正在使用以下代码。除了' affiliation'之外,一切都有效。部分。 它返回一个错误: AttributeError:' NoneType'对象没有属性' text' 如果没有.text,它将返回所有内容 - 类中的整个代码

import requests
import bs4
import re

headers = {'User-Agent':'Mozilla/5.0'}

url = 'http://pubs.acs.org/toc/jacsat/139/5'
html = requests.get(url, headers=headers)

soup = bs4.BeautifulSoup(html.text, 'lxml')

tags = soup.findAll('a', href=re.compile("full"))

for tag in tags:
    new_url = tag.get('href', None)
    newurl = 'http://pubs.acs.org' + new_url
    newhtml = requests.get(newurl, headers=headers) 
    newsoup = bs4.BeautifulSoup(newhtml.text, 'lxml')

    article_title = newsoup.find(class_="articleTitle").text
    print(article_title)

    affiliations = newsoup.find(class_="affiliations").text
    print(affiliations)

    authors = newsoup.find(id="authors").text
    print(authors)

    citation_year = newsoup.find(class_="citation_year").text
    print(citation_year)

    citation_volume = newsoup.find(class_="citation_volume").text
    print(citation_volume)

    citation = newsoup.find(id="citation").text
    print(citation)

    pubdate = newsoup.find(id="pubDate").text
    print(pubdate)

1 个答案:

答案 0 :(得分:1)

触发此异常是因为它未找到任何具有“affiliation”类的元素。 我已经检查过,并且在您的脚本擦除的第一个url中找不到源HTML(或任何其他属性)中具有此类值的任何元素。

我会发现错误,以避免脚本在找不到元素时断开并返回None或默认字符串。

这样的事情会起作用:

try:
    affiliations = newsoup.find(class_="affiliations").text
    print(affiliations)
except AttributeError:
    affiliations = None