Python实战作业:第一周大作业

第一周大作业,完成情况如下:


Python实战作业:第一周大作业_第1张图片
QQ截图20160521204843.png

代码如下:

import requests
from bs4 import BeautifulSoup

def get_info_url(who_sells,page):
    links = []
    for i in range(1, page + 1):
        url = 'http://bj.58.com/pbdn/{}/p{}/'.format(str(who_sells),i)
        wb_data = requests.get(url)
        soup = BeautifulSoup(wb_data.text,'lxml')
        for item_url in soup.select('td.t a.t'):
            if 'bj.58.com' in str(item_url):
                links.append(item_url.get('href').split('?')[0])
            else:
                pass
    return links

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

def get_info(who_sells,page):#获取详情页
    urls = get_info_url(who_sells,page)
    for url in urls:
        wb_data = requests.get(url)
        soup    = BeautifulSoup(wb_data.text,'lxml')
        title   = soup.select('div.col_sub.mainTitle > h1')[0]
        price   = soup.select('span.price.c_f50')[0]
        time     = soup.select('li.time')[0]
        data = {
            'title'     : title.text ,
            'price'     : price.text ,
            'cate'      : '个人' if who_sells == 0 else '商家' ,
            'area'       : list(soup.select('.c_25d')[0].stripped_strings) if soup.find_all('span','c_25d') else None,
            'time'      : time.text,
            'view'      : get_view(url),
            'url'       : url
        }
        print(data)
get_info(1,2)

总结:
1、这次的大作业,让我对函数间的相互引用有了新的认识,比如在获取详情页中,应用了获取列表网址的函数get_info_url,但是如果这个函数在get_info后面的话,实际上会报错的。函数之间的相互引用,还是有顺序的要求的。
2、按照老师的方法,获取浏览量,现在又获取不到了,所有的值返回的都是0,用浏览器打开也是0。这个问题暂时不知道怎么解决了。
3、地区的获得,用列表来实现,但是stripped_strings老是记不住,写一写再加深下印象。

你可能感兴趣的:(Python实战作业:第一周大作业)