python爬取静态和动态网页
python爬取静态网页1,网上关于静态网页的爬取例子有很多。自己写的一个python爬百度视频搜索网页的代码:#!/usr/bin/python#coding=utf-8import sysimport urllibimport urllib2from bs4 importBeautifulSoupreload(sys)sys.setdefaultencoding('utf-8')u
python爬取静态网页
1,网上关于静态网页的爬取例子有很多。自己写的一个python爬百度视频搜索网页的代码:
#!/usr/bin/python
#coding=utf-8
import sys
import urllib
import urllib2
from bs4 import BeautifulSoup
reload(sys)
sys.setdefaultencoding('utf-8')
url = "http://v.baidu.com/v"
class video_url(object):
def __init__(self,query):
self.query = query
def get_urlofquery(self):
values = {
'word': self.query,
'ie': 'utf-8'
}
data = urllib.urlencode(values)
urltemp = url + '?' + data
print urltemp
try:
request = urllib2.Request(urltemp)
response = urllib2.urlopen(request)
# print response.read()#返回的就是百度视频搜索‘食在囧途’后的页面
except urllib2.URLError, e:
if hasattr(e, "code"):
print e.code
if hasattr(e, "reason"):
print e.reason
data = response.read()
soup = BeautifulSoup(data, 'html.parser')
items = soup.find_all(name='h3',limit=5)
link_list = []
if items:
for item in items:
if item.find(name='a'): # find函数返回布尔值
if item.a.has_attr('href'):
temp1 = item.a.get('href').strip('\n')
# temp2 = item.span.text.strip('\n')
if temp1 != '#':
link_list.append(temp1)
return link_list
if __name__ == '__main__':
tempobject = video_url("卧虎藏龙")
link_list = tempobject.get_urlofquery()
if link_list:
for i in range(0, len(link_list)):
print link_list[i]
else:
print "no link!"
几个参考资料网址:
Python爬虫入门三之Urllib库的基本使用
Beautiful Soup 4.4.0 文档
关于BeautifulSoup的总结
2,如果所需内容都能通过data = response.read()获得,那自然没问题,但是如果想要爬取的内容是动态js返回的,那么靠data = response.read()得到的静态html是没有所想爬取内容的,这时候需要另外的工具。
python爬取动态网页
1,所需工具
selenium+PhantomJS
具体安装:
a,在cmd下切换到python安装目录,我的是C:\Python27\Scripts下,用命令:
easy_install selenium
即可安装selenium模块。
b,下载phantomjs
解压到C:\Python27\Scripts下,若解压后文件名假定为xxx, 则要把phantomjs.exe直接放在xxx下,有些在解压后phantomjs.exe在xxx\bin\下,那么复制phantomjs.exe到xxx\下,删除bin即可。
其实selenium+PhantomJS就是模拟浏览器访问url,然后将动态网页所有内容转化为静态html返回,这样速度回很慢。目前只知道这点,先记录一下。
具体代码如下:
#!/usr/bin/python
#coding=utf-8
import sys
from selenium import webdriver
reload(sys)
sys.setdefaultencoding('utf-8')
driver = webdriver.PhantomJS(executable_path='C:\Python27\Scripts\phantomjs-2.1.1-windows\phantomjs.exe')
driver.get("http://www.baidu.com")
data = driver.title
print data
几个参考资料网址:
如何爬取JS动态生成的数据?
Python爬虫爬取动态页面思路+实例(一)
python爬虫(上)–请求——关于模拟浏览器方法
Python抓取网页动态数据——selenium webdriver的使用
[Python爬虫] 在Windows下安装PIP+Phantomjs+Selenium
爬虫再探实战(三)———爬取动态加载页面——SELENIUM
爬虫再探实战(四)———爬取动态加载页面——请求JSON
更多推荐
所有评论(0)