Python实战课程第一周第9课:第一周大作业-提取58同城出售电脑的所有信息

本周最后一节课了,这大作业比较综合,要在页面上提取网址,然后根据提取到的网址,进行解析,提取每个网址上面的有效信息,例如标题、时间、地址、价格、浏览量等。

难点主要有:

  1. 要提取个人用户发布的信息,而非商家的。
  2. 浏览量由js控制,要找到js的网址才行。
  3. 有些页面没有地址信息,这会导致程序运行中断。

我的成果

成果.png

我的代码

from bs4 import BeautifulSoup
import requests,time

def get_links_from(who_sells=0):
    urls = []
    list_view = 'http://bj.58.com/pbdn/{}/pn2/'.format(str(who_sells))
    wb_data = requests.get(list_view)
    soup=BeautifulSoup(wb_data.text,'lxml')
    for link in soup.select('td.t a.t'):
        urls.append(link.get('href').split('?')[0])
    return urls
    #print(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_item_info(who_sells=0):
    urls = get_links_from(who_sells)
    for url in urls:
        wb_data = requests.get(url)
        soup = BeautifulSoup(wb_data.text,'lxml')
        data = {
            "title":soup.title.text,
            "price": soup.select('div.price_li > span > i')[0].text,
            'area': list(soup.select('div.palce_li > span > i')[0].stripped_strings),
            "cata": '个人' if who_sells == 0 else '商家',
            'views': soup.select('span.look_time')[0].text

        }
        print(data)

#get_links_from()
get_item_info()

我的总结

  1. 关于提取个人卖家信息,需要观察网站,以及寻找合适的标签。

    Paste_Image.png

    点击上图的入口,然后观察网址的变化,可以看到“1”是代表商家,“0”是代表个人卖家。
    list_view = 'http://bj.58.com/pbdn/{}/pn2/'.format(str(who_sells))

  2. 由js控制的浏览量应该怎么弄呢?(因为后来网站更新,浏览量不再由js控制了,所以提取更简单了)。

    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
        
    

    必须找到js控制的网址,然后比对和原来网址的联系,根据这种比对,就能实现从原网址到js网址的转换。当然有两个函数必不可少,分别是splitstrip,split表示从某个标识分割网址,而strip则表示去掉某个部分。通过这种剪切,就能转到js网址了。

  3. 如果想要网址的标题,可以直接使用网址中head部分。

    "title":soup.title.text

    这就表示直接提取head中的标题。

  4. 可以直接寻找class部分,来指定地址。

    'views': soup.select('span.look_time')[0].text

    例如上面的语句,直接在审查部分搜索span.look_time,发现这个部分是唯一的,即可定位。隔了几行的class样式之间,不用 > 符号,直接空格表示即可。

    另外,class样式中出现的 # 号,表示 id 的意思。想几个段落一起缩进的话,可以选择语句后,直接按 Tab键。
    样式标签前方的 . 代表的是class的意思。

  5. 最后,在语句中也可以实现条件选择。

    "cata": '个人' if who_sells == 0 else '商家'

    用简单的 if ...... else ..... 语句即可实现。

    当网页运行时,由于某个网页没有某些元素而导致错误时怎么办?

else none.png

用 if ...... else None 。如果在网页里面不能find_all这些元素的话,就直接会显示为None.

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

推荐阅读更多精彩内容

  • 经朋友介绍,认识到了python实战:四周实习爬虫系统,然后看了一下试看教程,觉得课程挺不错的,→_→重点是对于...
    隐逆阅读 746评论 0 50
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,504评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,497评论 18 139
  • 雨水的记忆 被皮鞋的质量擦淡 晴天的闪电不时划破夜空 那几年 甘谷麦子收了就种豆 渠里没水 天上一碧如洗 地里一镢...
    清水濯足阅读 193评论 0 1
  • uu07阅读 131评论 0 2