[英]Python - Web scraping with Beautiful Soup
我目前正在尝试使用Beautiful Soup重现网络抓取示例。 但是,我不得不说我觉得这很不直观,这当然也可能是由于缺乏经验。 如果有人可以帮我举一个例子,我将不胜感激。 我在网上找不到很多相关信息。 我想提取以下网站的第一个值(Dornum): http : //flow.gassco.no/
我只有这么远:
import requests
page = requests.get("http://flow.gassco.no/")
from bs4 import BeautifulSoup
soup = BeautifulSoup(page, 'html.parser')
先感谢您!
您需要先学习如何使用urllib
, urllib2
。
一些网站屏蔽蜘蛛。
就像是:
urllib2.request.add_header('User-Agent','Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36')
让网站认为您是浏览器,而不是机器人。
另一种方法是使用当前requests
模块。 您可以像这样传递user-agent
:
import requests
from bs4 import BeautifulSoup
headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36'
}
page = requests.get("http://flow.gassco.no/", headers=headers)
soup = BeautifulSoup(page.text, 'html.parser')
编辑 :要使此版本简单易用,您可以对浏览器会话进行变通。 您需要传递requests.get
一个cookie
,该cookie
告诉站点一个会话号,其中条款和条件已被接受。
运行此代码:
import requests
from bs4 import BeautifulSoup
url = "http://flow.gassco.no"
s = requests.Session()
r = s.get(url)
action = BeautifulSoup(r.content, 'html.parser').find('form').get('action') #this gives a "tail" of url whick indicates acceptance of Terms
s.get(url+action)
page = s.get(url).content
soup = BeautifulSoup(page, 'html.parser')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.