使用BeautifulSoup进行基本的Python Web抓取

时间:2018-09-10 21:15:25

标签: python web-scraping beautifulsoup

我对编码还很陌生,最近我开始研究网络抓取。我一直在关注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'

1 个答案:

答案 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