我对编码还很陌生,最近我开始研究网络抓取。我一直在关注this tutorial并阅读BS4文档,但我看不出为什么我的代码无法正常工作。
我正在尝试使用网络爬虫提取this post's headline,但似乎找不到与“(('div',class _ ='header')””匹配的标签
我的代码:
import requests
from bs4 import BeautifulSoup
SOURCE = requests.get('http://coreyms.com/').text
SOUP = BeautifulSoup('SOURCE', 'lxml')
HEADER = SOUP.find('div', class_='header')
HEADLINE = HEADER.h2.a.href
print(HEADLINE)
错误消息:
Traceback (most recent call last):
File "WSCoreySchafer.py", line 10, in <module>
HEADLINE = ARTICLE.h2.a.href
AttributeError: 'NoneType' object has no attribute 'h2'
答案 0 :(得分:3)
该行:
SOUP = BeautifulSoup('SOURCE', 'lxml')
尝试从字符串'SOURCE'
创建一个汤对象,而不是从变量SOURCE
中存储的值创建汤对象。
您还在html中寻找错误的元素,您不希望<div>
与class="header"
一起使用,实际上是在寻找<header>
元素(其中此页面上有多个)。实际上,我建议您使用<h2>
查找class="entry-title"
元素,您可以这样操作:
import requests
from bs4 import BeautifulSoup
SOURCE = requests.get('http://coreyms.com/').text
SOUP = BeautifulSoup(SOURCE, 'lxml')
HEADER = SOUP.find('h2', class_='entry-title')
headline_href = HEADER.a['href']
print(headline_href)
可打印
http://coreyms.com/development/best-sublime-text-features-and-shortcuts