课时11

  • select 函数返回的数据是列表,即使它只有一个。
1.jpg

那么当我们只采集单页面 不想 用 for 赋值 zip() 的时候我们就需要对该列表里面的函数进行选择。

title = soup.select('div.pho_info > h4')[0].text 

这里面是选择第一项 然后对他取文本的意思。

而这里面为什么选择 div.pho_info > h4 是因为 这是里标题最近的 单独 纯在好找的 一个层级。

1.jpg

在具体页面里面,一般向获取的元素都是在自己单独的一个div 或者样式里面,而在这里面我们获取自己想要的元素就是通过 找到要获取元素所在div ,然后再找他的样式结构。

address = soup.select('div.pho_info > p')[0].get('title') 
1.jpg

这里面的 返回值, 用什么来接 就返回到哪里。

1.jpg

要爬取具体内容页面时 首先就要得到他的具体链接地址,而具体链接地址是放在列表页面的,那么我们就需要一个函数来爬取列表页面,然后把获取到的内容页面链接放入到一个空列表里面。

  • 从列表页面获取到内容的链接, 那么我们就要找这些内容链接有什么相同的 属性, 这里面找到的是
    resule_img_a
1.jpg

这个标签是存在于a 标签里面的,
所以写为,a.resule_img_a

soup.select('a.resule_img_a'):

自己在学了这之后有一点感觉不一样但又说不出来这和之前的 筛选又有什么区别, 于是努力回想 如果按照之前的筛选方法 一般都是在要选的链接上, 右键复制 selector 然后 在看要获取的属性。

1.jpg
  • 直接一步添加自己要爬的内容页面
1.jpg

我的代码

from bs4 import BeautifulSoupimport requestsurl = 'http://bj.xiaozhu.com/fangzi/1508951935.html'wb_data = requests.get(url)soup = BeautifulSoup(wb_data.text,'lxml')title = soup.select('div.pho_info > h4')[0].textaddress = soup.select('body > div.wrap.clearfix.con_bg > div.con_l > div.pho_info > p')[0].get('title')price = soup.select('#pricePart > div.day_l > span')[0].textpic = soup.select('#imgMouseCusor')[0].get('src')host_name = soup.select('#floatRightBox > div.js_box.clearfix > div.w_240 > h6 > a')[0].get('title')# host_gender = soup.select('div.member_pic > div')[0].get('class')[0]host_gender = soup.select('#floatRightBox > div.js_box.clearfix > div.w_240 > h6 > span')[0].get('class')[0]def get_gender(gender):    if gender == 'member_girl_ico':        return '女'    if gender == 'member_boy_ico':        return '男'get_gender('member_girl_ico')data = {    'title':title,    'address':address,    'price':price,    'pic':pic,    'host_name':host_name,    'host_gender':get_gender(host_gender)}print(data)page_link = []def get_page_link(page_number):    for each_number in range(1,page_number):        full_url = 'http://bj.xiaozhu.com/search-duanzufang-p{}-0/'.format(each_number)        wb_data = requests.get(full_url)        soup = BeautifulSoup(wb_data.text,'lxml')        for link in soup.select('a.resule_img_a'):            page_link.append(link)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,713评论 1 92
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,422评论 2 17
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,235评论 25 709
  • 翘起我们的心智杠杆 心智也有杠杆,这个说法很新颖。心智对我来说是一种模式,是一种思考逻辑,但是将这种思考逻辑方式同...
    英吉阅读 3,405评论 0 0
  • 2017年8月19日 星期六 晴 今天我们育心经典,去东山大海游学。 我们到了海边沙滩上一看见大海就向大海跑去!...
    黄浚铠阅读 2,695评论 2 9

友情链接更多精彩内容