当前位置:   article > 正文

多线程京东抓包爬取_多进程爬取京东商品数据

多进程爬取京东商品数据

                                   多线程京东抓包爬取

    考虑到上次利用splash动态渲染爬取京东商品信息效率有限,此次是对京东网站进行逆向分析爬取,利用requests模拟浏览器请求爬取商品信息,并加上多线程爬取,爬取效率得到了大大提高。

    爬取商品的数据包含:商品名,商品ID,作者,价格(折后价、折前价和电子版价格(若有)),书籍排名,评论统计(评论总数、好评数、差评数、好评率、默认好评数),评论内容。

    数据以json形式保存到非关系数据库elasticsearch中。

代码实现:

  1. import requests
  2. from bs4 import BeautifulSoup
  3. import time
  4. import re
  5. from scrapy.selector import Selector
  6. import json
  7. from e_commerce.module.es_mapping import ProductInfoType
  8. from threading import Thread
  9. from queue import Queue
  10. sessions = requests.session() #创建一个会话
  11. page_url = "https://search.jd.com/Search"
  12. comment_count_url = 'https://sclub.jd.com/comment/productCommentSummaries.action'
  13. comment_url = 'https://sclub.jd.com/comment/productPageComments.action'
  14. start_time = time.time()
  15. exit_ParseThread = False
  16. exit_SaveThread = False
  17. def parse_Product(page_queue , info_queue):
  18. #解析列表商品信息
  19. #获取第一页商品数据,可遍历page获取更多页面商品数据
  20. while True:
  21. if page_queue.empty():
  22. break
  23. page = page_queue.get() #1,3,5,...
  24. params_1 = {
  25. "keyword": "python" ,
  26. "enc" : "utf-8" ,
  27. "qrst" : "1",
  28. "rt" : '1' ,
  29. "stop" : '1' ,
  30. "vt" : '2',
  31. "wq" : 'python',
  32. "page" : page ,
  33. # "s" : '1' ,
  34. # "click" : '0'
  35. }
  36. headers = {
  37. 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
  38. 'accept-encoding': 'gzip, deflate, br',
  39. 'accept-language': 'zh-CN,zh;q=0.9',
  40. 'cache-control': 'max-age=0',
  41. 'upgrade-insecure-requests': '1',
  42. 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
  43. }
  44. #请求京东前30个商品信息
  45. pro_res = sessions.get(page_url , headers= headers , params= params_1)
  46. # print("parse front 30 product info")
  47. parseIdAndPrice(pro_res.content , info_queue)
  48. params_2 = params_1.copy()
  49. params_2.update({
  50. "page" : page + 1 ,
  51. # "s" : '31' ,
  52. # "click" : '',
  53. 'scrolling': 'y',
  54. 'log_id': str
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/735965
推荐阅读
相关标签
  

闽ICP备14008679号