如何配置此功能User-Agent?

时间:2018-08-23 19:40:14

标签: python-3.x web-scraping beautifulsoup

如何为该功能配置用户代理?我尝试了一些尝试,但似乎无法做到。函数从参数中给定链接中刮取链接。该程序的主要部分对链接列表中的每个条目重复此功能。

想法是程序将从链接跳到链接扫描以进行链接搜索。我遇到的问题是在进入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

1 个答案:

答案 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数据构建的,这很棘手!