我目前正在创建一个网络爬虫,用于从学校项目的网站收集数据。问题是我得到以下错误代码(仅从此网页):
<h1>You are viewing this page in an unauthorized frame window.</h1>
0
[Finished in 5.4s]
这是完整的代码:
#Creating my own webcrawler
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
import urllib.request
myurl = 'https://nvd.nist.gov/vuln/data-feeds'
myReq = (myurl)
req = urllib.request.Request(
myurl,
data=None,
headers={
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
}
)
#opening my connection, grabbing the page
uClient = uReq(myurl)
page_html = uClient.read()
uClient.close()
#html parsing
page_soup = soup(page_html, 'html.parser')
print(page_soup.h1)
containers = page_soup.findAll('td rowspan="1"',{'class':'x-hidden-focus'})
print(len(containers))
如您所见,我什至添加了一个用户代理,但仍收到此错误消息。任何帮助表示赞赏!
答案 0 :(得分:0)
我相信'findAll'方法上的第一个参数不会帮助您,因此问题可能与HTTP请求-响应周期无关。
我查询了您正在使用的url,文档中所有'td'元素的所有可能属性是:
{'class': ['xml-file-size', 'file-20']}
{'class': ['xml-file-type', 'file-20']}
{'colspan': '2', 'class': ['xml-file-type', 'file-20']}
{'rowspan': '3'}
{'colspan': '2'}
{}
查询“ rowspan”为1,“ class”“ x-hidden-focus”返回空列表。
尝试倒数第二行:
containers = page_soup.findAll('td', {'colspan'='1', 'class':'file-20'})
或:
containers = page_soup.findAll('td', {'rowspan': '3'})
甚至只是:
containers = page_soup.findAll('td')
由您决定要查找哪个特定的“ td”元素。
还请查看documentation,以了解更多使用BeautifulSoup的方法,包括将函数作为参数传递,等等。