即使在实施用户代理后,网站也会拒绝Web抓取工具

时间:2019-03-19 09:51:36

标签: python python-3.x

我目前正在创建一个网络爬虫,用于从学校项目的网站收集数据。问题是我得到以下错误代码(仅从此网页):

<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))

如您所见,我什至添加了一个用户代理,但仍收到此错误消息。任何帮助表示赞赏!

1 个答案:

答案 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的方法,包括将函数作为参数传递,等等。