Python实战课程第一周笔记

    经朋友介绍,认识到了python实战:四周实习爬虫系统,然后看了一下试看教程,觉得课程挺不错的,→_→重点是对于学生党有点贵啊,经过几天纠结还是决定加入这个课程了。

    现在就不多说废话了,直接写心得,首先按照课程要求安装lxml,Beautiful Soup ,Requests,对了,忘记说我的环境,WIN7 64位,python3.4版本,其实有心换MAC,奈何非我们这种普通人买的起的,所以就WIN环境先用着,因为我提前装了PIP,安装这些都挺容易的,直接pip3 install xxxx就行了,反正我中间没有遇到错误。

    什么环境也准备好了,然后开基础课程,什么认识网页结构之类的就不多说了,反正我也只是了解一下这个,说具体的也不是太懂。然后主要是定位网页元素了,我们重点是要学习这个,用google chrome浏览器中的检查,就可以查询到结构。当然刚开始都是比较简单的,我觉得是比较好学的。

    剩下的就是import各种库,然后使用代码了:

刚开始用BeautifulSoup还是认真的打一下代码吧,soup = BeautifulSoup(html,'lxml')

这是soup html都是变量  lxml是解析网页用的五个库中的一个

    课程中所讲的节点什么的似乎没什么难的,兄弟节点和父子节点应该都是可以看得懂的,只要学过高中生物遗传部分的应该都不难看懂。

    剩下的就是自己实际操作了,课程自带的网页就是很好的练手工具了,初步练手之后就是实战58同城了。

   先爬一个界面下的详细信息,源代码如下

url = 'http://bj.58.com/pingbandiannao/25853969546167x.shtml'
wb_data = requests.get(url)
soup = BeautifulSoup(wb_data.text,'lxml')

    url这个不用说了,是你要访问的地址,然后用requests获取内容储存到变量wb_data中,然后使用BeauifulSoup解析到soup变量中,然后我们来提取一下想要的内容,

title = soup.title.text
price = soup.select('#content span.price')
data = soup.select('.time')
area = soup.select('.c_25d')


    这里就是提取想要的内容,因为标题是直接显示在网页头的,所以使用了取巧方法titile.text,价格、更新时间、还有区域是使用的查看结构的方式去获取的,最后把他们封装在字典中,

data = {
'标题':title,
'价格':price[0].text,
'时间':data[0].text,
'所属区域':list(area[0].stripped_strings) if soup.find_all('span','c_25d') else None,
'类型':'个人'if who_selit==0 else'商家',
'浏览次数':get_view_from(url)
}


    因为区域部分有些网页中是没有的,所以使用了if作为条件判断,如果没有就返回控制None,幼儿画就打印,至于类型部分有个if判断是后期判断抓取的数据是个人还是商家的列表所使用,这里没什么关系。这段代码写完以后就是print打印一下内容了。

    抓取单网页的内容就结束了,下面说一下返回到列表页面去抓当前列表的所有内容。

urls=[]
list_view = 'http://bj.58.com/pbdn/{}/pn2/'.format(str(who_selit))
wb_data = requests.get(list_view)
soup = BeautifulSoup(wb_data.text,'lxml')
for link in soup.select('td.t > a.t'):
if str('jump') in str(link) or str('zhuanzhuan')in str(link):
pass
else:
urls.append(link.get('href').split('?')[0])
return urls


先说下代码的步骤,定义下urls变量为一个列表,然后定义一下list_view的内容,这里就是58额列表页面,最后的方法.format(str(who_selit)),是替换一下内容,这个是比较简单,who_selit变量就是要替换进去的内容,然后就是解析网页什么的,通过select查找网页结构获取想要的网址,写个循环进去获取每个商品的网址,因为58里面有个转转界面,所以写个if判断下获取的网址,如果是转转的就pass了,不是的话加入到urls这个变量中。

    由于浏览次数这个是JS控制的,并且和商品的URL是有一定关系的,这里我贴一下代码,这段代码我只能看懂,如果让我说个123还真说不出来。

id = url.split('/')[-1].strip('x.shtml')
api = 'http://jst1.58.com/counter?infoid={}'.format(id)
js = requests.get(api)
views = js.text.split('=')[-1]


到这里似乎就差不多了 封装一下各个部分,然后做个完整的程序出来,下面贴一下完整的代码

#-*-coding:utf-8-*-
from bs4 import BeautifulSoup
import requests
import time

def get_urls(who_selit=0):
urls=[]
list_view = 'http://bj.58.com/pbdn/{}/pn2/'.format(str(who_selit))
wb_data = requests.get(list_view)
soup = BeautifulSoup(wb_data.text,'lxml')
for link in soup.select('td.t > a.t'):
#剔除转转界面
if str('jump') in str(link) or str('zhuanzhuan')in str(link):
pass
else:
urls.append(link.get('href').split('?')[0])
return urls
#返回所有的商品界面

def get_view_from(url):
id = url.split('/')[-1].strip('x.shtml')
api = 'http://jst1.58.com/counter?infoid={}'.format(id)
js = requests.get(api)
#获取一下浏览次数
views = js.text.split('=')[-1]
return views

def get_info(who_selit=0):
urls = get_urls(who_selit)
for url in urls:
wb_date = requests.get(url)
soup = BeautifulSoup(wb_date.text,'lxml')
title = soup.title.text
price = soup.select('#content span.price')
data = soup.select('.time')
area = soup.select('.c_25d')
data = {
'标题':title,
'价格':price[0].text,
'时间':data[0].text,
'所属区域':list(area[0].stripped_strings) if soup.find_all('span','c_25d') else None,
'类型':'个人'if who_selit==0 else'商家',
'浏览次数':get_view_from(url)
}
time.sleep(0.5)
#延迟一下 避免58的反爬虫
print(data)
#解析每个商品界面并且整理到字典中并且输出

get_info()


以上代码经过2016.05.06测试可以使用并且正确输出

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容