Python 如何更改用户代理urllib2

Python 如何更改用户代理urllib2,python,python-2.7,user-agent,Python,Python 2.7,User Agent,我正在尝试使用以下命令访问页面 page = urllib2.urlopen(full_url) soup = BeautifulSoup(page, 'html.parser') li_post_id = "post-" + str(post_id) li_soup = soup.find('li', attrs={'id':li_post_id}) 这在我的ubuntu机器上运行得很好,但是当在我的Windows服务器上运行它时,我得到了403禁止的错误,所以我认为问题出在用户代理上 我

我正在尝试使用以下命令访问页面

page = urllib2.urlopen(full_url)
soup = BeautifulSoup(page, 'html.parser')

li_post_id = "post-" + str(post_id)
li_soup = soup.find('li', attrs={'id':li_post_id})
这在我的ubuntu机器上运行得很好,但是当在我的Windows服务器上运行它时,我得到了403禁止的错误,所以我认为问题出在用户代理上

我该如何将其更改为Firefox?我只看过使用请求更改用户代理的教程,但我不想将我的所有代码都更改为此。

您可以尝试一下

import random
import requests, bs4


agents= [
'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko)',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko)',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)',
'Mozilla/5.0 (Windows NT 6.4; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)']

headers = {"User-Agent":random.choice(agents)}
response = requests.get(full_url,headers=headers)
soup = BeautifulSoup(response.text, 'lxml')

更改标题与
beautifulsou
无关。它仅用于HTML解析。您需要在urllib请求中更改它,如下所示:

蟒蛇3

import urllib.request

req = urllib.request.build_opener()
req.addheaders = [('User-Agent', 'Some user agent')]
response = req.open('http://www.stackoverflow.com')
蟒蛇2.7

import urllib2

req = urllib2.build_opener()
req.addheaders = [('User-Agent', 'Some user agent')]
response = req.open('http://www.stackoverflow.com')

您在HTTP请求头中设置了
User Agent
,BS与此无关。如上所述,BeautifulSoup根本不与HTTP请求交互。(我相信)您真正想知道的是如何使用urllib2实现这一点。我编辑了你的问题以反映这一点。提问者表示他们已经看到了使用
请求的答案,但他们正在寻找不同的解决方案。