如何为该功能配置用户代理?我尝试了一些尝试,但似乎无法做到。函数从参数中给定链接中刮取链接。该程序的主要部分对链接列表中的每个条目重复此功能。
想法是程序将从链接跳到链接扫描以进行链接搜索。我遇到的问题是在进入HTTPError 403 Forbidden大约1500个链接之后。显然,这是由于服务器设置拒绝了来自Python用户代理的urllib请求。
# Create a connection, (starting point)
def scrape_links(a_link):
"""Scrape links from a URL"""
links = []
html = urlopen(a_link)
bs_obj = BeautifulSoup(html.read(), "html.parser");
for link in bs_obj.find_all('a'):
url = (link.get('href'))
try:
if url[0:7] == 'http://' or url[0:8] == 'https://':
print(url)
links += [url]
except TypeError:
print('Skipping link...')
return links
答案 0 :(得分:0)
您将要添加某种用户代理,并且可能需要在获取链接之间稍作停留。您可以出于很多原因获得MyType
的帮助:
我建议使用403
模块,因为我的运气更好。遵循以下原则:
request
与您所拥有的有所不同,但这应该使您朝正确的方向前进。您可能必须尝试使用不同的标头,或者对我也有用的只是命名我的用户代理import time
import request
from bs4 import BeautifulSoup
def scrape_links(a_link):
print("pausing 1 second between URL hits..")
time.sleep(1)
headers = {'User-Agent': 'Mozilla/5.0'}
r = requests.get(a_link, headers=headers)
print(r.text)
soup = BeautifulSoup(r.text, 'html.parser')
print(soup.prettify())
...the rest
或其他名称。有时,该站点只是想知道您实际上是一个机器人。整个工作都是围绕解析和收集Web数据构建的,这很棘手!