Python 中的网络抓取 Yell.com

Web-scraping Yell.com in Python

阅读大量内容后,我尝试使用 urllibrequests[= 在 yell 网站上进行网络抓取的第一步37=] 但我在两种情况下都得到相同的结果(未找到 404)。

url是:

url = https://www.yell.com/

我尝试过的:

  • urllib包
import urllib.request
f = urllib.request.urlopen(url)
print(f.read(100))

import urllib.request
opener = urllib.request.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
opener.open(url)
  • 请求包
url = 'www.yell.com'
response = requests.get(url)

headers = {'Accept': 'text/html'}
response = requests.get(url, headers=headers)

但是我遇到了 404 错误。

使用 urllib 试试这个

import urllib.request

url = 'https://www.yell.com/'
headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)' }
request = urllib.request.Request(url, headers=headers)
response = urllib.request.urlopen(request)

print(response.read())

我建议你使用 requests + beautifulsoup4 https://www.crummy.com/software/BeautifulSoup/bs4/doc/ 它会让你的抓取生活更轻松

#你也可以使用selenium来避免http错误 从 selenium 导入 webdriver 从 bs4 导入 BeautifulSoup 导入 urllib.request

main_url = 'https://www.yell.com/'
driver = webdriver.Chrome(r'write chromedriver path')
driver.get(main_url)
res = driver.execute_script("return document.documentElement.outerHTML")
soup = BeautifulSoup(res, 'html.parser')
headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)' }
request = urllib.request.Request(main_url, headers=headers)
response = urllib.request.urlopen(request)

print(response.read())