美文网首页
python四周实战——第一周作业

python四周实战——第一周作业

作者: 白狼小将 | 来源:发表于2016-08-12 23:51 被阅读28次

    总算做出来了第一周的作业,自己觉得勉强符合课件里的要求了吧,还没来得及看作业详解。还是觉得很方啊,像课程里的什么反爬虫什么的都没加上去

    总结:

    1. 感觉这个作业跟第三课的练习非常地像,借鉴了很多。另外作业描述得不是很清楚,开始是爬取除了转转和方框里的推广,但是只有第一页有3条,后面的一条都没有,于是自作主张爬取转转,CSS selector都重新加过。
    2. 包装进zip的时候,开始由于有一个页面是没有“区域”显示的,于是这个页面就没有加进来,本来才3个页面就剩2个了。试了很久也没想到办法,只好看了下答案,发现没有zip,直接构造data了,而且还为每个元素设置了默认值。有默认值就好办多了
    3. 即使是默认值,发现自己还是只能抄抄了,对于python的数据类型不够熟,自己写的都报错,改改答案的,不明觉厉。明天得好好看讲解还有翻书查文档补一下。
    4. 提示里说的运用所学去反爬取吧,还有浏览量的问题,结果我运行着发现不需要反爬取啊,而且浏览量也和其他元素一样顺利抓取了。。。是哪里搞错了?很方很方。。。呃,感谢58网站那么给力
    5. 第四课的练习还没完成啊,网址打不开得翻墙,虽然介绍了几个,还没来得及去体验。自己打开花瓣也是这种类型的爬取了一下,发现。。发现。。没有发现规律啊,爬取的功夫还没到位,被专业的反爬取给打败了。
    6. 先交作业,虽然不完美,但是先做出来才能找到差距,这周末继续补一补基础。

    代码:

    from bs4 import BeautifulSoup
    import requests
    import time
    
    urls = ['http://bj.58.com/pbdn/0/pn{}/'.format(page) for page in range(1,5)]
    
    def get_link(url):
        Wb_data = requests.get(url)
        time.sleep(2)
        soup = BeautifulSoup(Wb_data.text, 'lxml')
        links= soup.select('#infolist > div.infocon > table > tbody > tr.zzinfo > td.t > a.t')
        for link in links:
            href = link.get('href')
            get_detail_info(href)
    
    def get_detail_info(url,data=None):
        Wb_data = requests.get(url)
        soup = BeautifulSoup(Wb_data.text,'lxml')
    
        items = soup.select('#nav > div > span:nth-of-type(4) > a')
        times = soup.select('#index_show > ul.mtit_con_left.fl > li.time')
        prices= soup.select('body > div > div > div > div > div.info_massege.left > div.price_li > span > i')
        qualis= soup.select('body > div > div > div > div > div.info_massege.left > div.biaoqian_li')
        areas = soup.select('body > div > div > div > div > div.info_massege.left > div.palce_li > span > i')
        views = soup.select('body > div > div > div > div > div.box_left_top > p > span.look_time')
    
        data = {
                'item' :list(items[0].stripped_strings),
                'title':soup.title.text,
                'time' :times[0].text if len(times) > 0 else "",
                'price':prices[0].text if len(prices) > 0 else 0,
                'quali':list(qualis[0].stripped_strings) if len(qualis) > 0 else [],
                'area' :list(areas[0].stripped_strings) if len(areas) > 0 else [],
                'view' :views[0].text if len(views) > 0 else 0
        }
        print(data)
    
    for single_url in urls:
        get_link(single_url)
    
    
    

    相关文章

      网友评论

          本文标题:python四周实战——第一周作业

          本文链接:https://www.haomeiwen.com/subject/uauesttx.html