网络爬虫工具BeautifulSoup连载-4-结合requests模块
在<<网络爬虫工具BeautifulSoup连载-2-入门示例>>一文中,我们用urllib2模块来生成BeautifulSoup所需的文档参数,如,

url = r"http://106.15.193.218/"
res = urllib2.urlopen(url)
soup = BeautifulSoup(res, "html.parser")

在<<网络爬虫工具BeautifulSoup连载-3-爬网站生成树数据>>一文中,我们用webdriver模块来生成BeautifulSoup所需的文档参数,如,

url = r"http://www.tuoxitech.com/htm/zhishifenxiang/"
driver = webdriver.Firefox()  
driver.get(url)  
time.sleep(3)
res = driver.page_source.encode("utf-8")
soup = BeautifulSoup(res, "html.parser")

除了这两种方式之外,我们还可以用requests模块来生成BeautifulSoup所需的文档参数。本节就讲述这样的一个例子。
需求:和<<网络爬虫工具BeautifulSoup连载-2-入门示例>>一文中,示例2的需求一样:“获取下面网页中红线框中显示的商品种类信息”。



解决问题思路和<<网络爬虫工具BeautifulSoup连载-2-入门示例>>一文中,示例2的一样(细节请见该文),只不过这次我们用的是requests模块,代码如下:
# -*- coding: utf-8 -*-
import re
import requests
import sys
from bs4 import BeautifulSoup


saveout = sys.stdout                                      
savedFile = open('eshop_out.log', 'a+')                            
sys.stdout = savedFile

url = r"http://106.15.193.218/"

response = requests.get(url)

response.encoding = "utf-8"  #指定正确的编码方式,否则会出现乱码

res = response.text

soup = BeautifulSoup(res, "html.parser")
entities_list = soup.find("div", {"class" : "shoptwoclass"})

entities = entities_list.findAll(name="a")

for entity in entities:
    print entity.string.encode("utf-8")
    #如果使用print entity.string将会报编码错误。

sys.stdout = saveout                                      
savedFile.close()

运行结果如下:
厨房电器
电饭煲
电磁炉
电炖锅
电烤箱
焖烧锅
电蒸笼
压力锅
煮蛋器
烤面包机
微波炉
消毒柜
料理机
绞肉机
咖啡壶
烘碗机
燃气灶
榨汁机
电热水器
燃气热水器
生活电器
电水壶
电风扇
电熨斗
吸尘器
加湿器
电暖器
豆浆机
饮水机
热水瓶
保温杯
电话机
活氧机
电蚊香
空气净化器
电源插座
台灯
护理电器
电吹风
剃须刀
剃须刀配件
理发器
脱毛器
美发造型器
浴霸
修剪器
健身器材
时尚氧吧
睫毛卷翘器
健康电器
电子秤
止鼾器
助眠器
按摩器
电子血压计
座便器
大家电
电视机
空调
洗衣机
电冰箱
手机数码
手机
手机配件
数码相机
数码摄像机
录音笔
GPS导航
数码相框
MP3/4/5
数码配件
电脑网络
 U盘
鼠标
键盘
音箱
机箱
摄像头
显示器
键鼠套装
机箱电源
散热底座
耳机/耳麦
笔记本电脑



相关课程
  • 高级软件测试课程

    ¥5000元173人学习

  • 软件测试就业班全栈课程

    ¥6000元166人学习

  • 友情链接
  • 唯美谷