当当图书爬虫

2020/02/21 posted in  项目
# 爬取当当网图书
import requests
from pyquery import PyQuery
import csv
import time

class DDSider(object):
    def __init__(self,key):
        self.key = key
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'
        }
        self.base_url = 'http://search.dangdang.com/?key='+key+'&act=input&page_index={}'
    # 获取界面内容 
    def get_pageInfo(self):
        
        num_page = 0
        while True:
            num_page += 1 
            page_url = self.base_url.format(num_page)
            res = requests.get(page_url,headers=self.headers)
#             print(res.content.decode('GBK'))
            
            # 解析
            self.parse_pageInfo(res.content.decode('GBK'))
            time.sleep(1)
            if num_page == 1:
                break
                
    def parse_pageInfo(self,html):
        doc = PyQuery(html)
        
        book_ul = doc('#component_59 li').items()
        
        for one_li in book_ul:
#             print(one_li)
            # 图片的链接
            if one_li('.pic img').attr('data-original'):
                img_url = one_li('.pic img').attr('data-original')
                
            else:
                img_url = one_li('.pic img').attr('src')
            
            # 标题
            title = one_li('.name a').attr('title')

            # 价格
            price = one_li('.price .search_now_price').text()

            # 获取评价数
            comments = one_li('.search_star_line .search_comment_num').text()
            
            #search_star_black
#             stars = one_li('.search_star_black span').attr('style').split(':')[-1].strip('%;')
            stars = float(one_li('.search_star_black span').attr('style').split(':')[-1].strip('%;'))/20
#             print(stars)

if __name__ == "__main__":
    dd = DDSider('python')
    dd.get_pageInfo()
5.0
4.5
4.5
4.5
4.5
4.5
4.5
5.0
4.5
4.5
5.0
4.5
5.0
3.0
4.5
4.5
5.0
5.0
5.0
4.5
5.0
4.5
4.5
4.5
4.5
0.0
4.5
4.5
4.5
4.0
4.5
5.0
4.0
5.0
4.5
4.5
4.5
5.0
3.0
5.0
5.0
5.0
5.0
4.5
4.5
0.0
5.0
5.0
4.5
5.0
4.0
5.0
4.5
5.0
4.5
0.5
4.5
4.5
4.0
5.0
import time
import requests
import json
# 时间戳: 1970-01-01 00:00:00 到当前时间的的秒数(10位数)或者是毫秒数(13位)
# timestamp = 1559223244110
# timearray = time.localtime(float(timestamp/1000))
# tt = time.strftime('%Y--%m--%d %H:%M:%S',timearray)
# print(tt)

# 把当前时间转成时间戳的格式

# timestamp = int(time.time())*1000
# timearray = time.localtime(float(timestamp/1000))
# tt = time.strftime('%Y--%m--%d %H:%M:%S',timearray)
# print(tt)
# 动态界面的爬取
base_url = 'https://careers.tencent.com/tencentcareer/api/post/Query?timestamp={}&keyword=Python&pageIndex=1&pageSize=10&language=zh-cn&area=cn'

timestamp = int(time.time())*1000
headers = {
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'
        }
url = base_url.format(timestamp)
print(url)

res = requests.get(url=url,headers=headers)
# print(res.content.decode('utf-8'))

# 将数据转化成Python对象
conntent_dict = json.loads(res.content.decode('utf-8'))

Data_dict = conntent_dict['Data']
# posts_list 里面存的就是我们想要的数据
posts_list = Data_dict['Posts']

# 拿到每一条数据
for value_dict in posts_list:
    
    RecruitPostName = value_dict['RecruitPostName']
    print(RecruitPostName)
    LastUpdateTime = value_dict['LastUpdateTime']
    print(LastUpdateTime)





https://careers.tencent.com/tencentcareer/api/post/Query?timestamp=1559224906000&keyword=Python&pageIndex=1&pageSize=10&language=zh-cn&area=cn
25923-监控系统开发工程师(Python)(深圳)
2019年05月30日
31504-AI机器人后台开发工程师(python)
2019年05月29日
CSIG16-python高级研发工程师
2019年05月25日
TME-腾讯音乐python开发工程师
2019年05月17日
25923-Python高级工程师(上海)
2019年04月19日
25923-Python高级工程师(深圳)
2019年04月19日
25923-数据分析平台开发工程师(Python)(深圳)
2019年03月21日
PCG04-安全测试专家(后台服务/客户端)
2019年05月30日
30359-大数据高级开发工程师(深圳)
2019年05月30日
31504-腾讯云监控高级运维工程师
2019年05月30日