###本文提供的代码只用于学习,请勿用于商业用途

这次没用正则和BS4,用了XPATH,因为真的好久好久没用xpath了。

唯一要主要克服的难点就是京东的ajax加载,直接requests抓网页只有前30个商品,还要用get请求访问目标url,得到后面的商品。b变量其实是UNIX时间戳。

PS,真的好想买索尼的电视机,因为安卓电视+无开机广告......建议电视机运行内存大于2G,CPU配A73,选择安卓是为后续刷机或者装第三方应用考虑

#coded by 伊玛目的门徒
from bs4 import BeautifulSoup
import requests
# coding: utf-8
from lxml import etree
import pandas as pd
import timestart = time.clock()header={'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.XXXX.XXX Safari/537.36'}head={'authority': 'search.jd.com','method': 'GET','path': '/s_new.php?keyword=%E7%94%B5%E8%A7%86%E6%9C%BA&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E7%94%B5%E8%A7%86%E6%9C%BA','scheme':'https','referer': 'https://search.jd.com/Search?keyword=%E7%94%B5%E8%A7%86%E6%9C%BA&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E7%94%B5%E8%A7%86%E6%9C%BA&cid2=653&cid3=655&page=3&s=58&click=0','user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36','x-requested-with': 'XMLHttpRequest','Cookie':'pinId=P7U4oU1101vnxG4Eir9OvbV9-x-f3wj7; shshshfpa=3120508e-1db3-33c7-d34d-733fc57f5c61-1527256832; shshshfpb=2b679cd3d88844dc7956f01c306d1e8ea5b0817076f66fb12543702016; qrsc=3; __jdu=2045744036; TrackID=1wgah744lMsZWXTwC-q-Biyu37x7sxp8CseoInLtJZAVBG6zQJux5G9mvMGBhV3T3hMRrtlFHyNDJTPVf9ckESDMKHNDoZr-Wr6ETbyEoNGE; __jdv=122270672|baidu|-|organic|not set|1552825203464; areaId=2; PCSYCityID=2; shshshfp=f1024c8fe38dc72f7cbd01d3e8120c95; xtest=428.cf6b6759; ipLoc-djd=2-2830-51800-0; user-key=859e46c8-d778-4972-8cb6-435b9d3378b6; cn=0; 3AB9D23F7A4B3C9B=J6H7CPQOXRM4BEEC34ESMFZSPDECXYZUVXQW2BOOW2P3QJXJOXSEAMVSMD5DV3NK7MR3DZNGSK2XAS6OUUNRDR532U; __jda=122270672.2045744036.1495102986.1552825203.1552906130.51; __jdc=122270672; rkv=V0500; __jdb=122270672.2.2045744036|51.1552906130; shshshsID=8782cfd99609426bed86f079aa971f79_2_1552906303039'}cookies={'cookies': 'pinId=P7U4oU1101vnxG4Eir9OvbV9-x-f3wj7; shshshfpa=3120508e-1db3-33c7-d34d-733fc57f5c61-1527256832; shshshfpb=2b679cd3d88844dc7956f01c306d1e8ea5b0817076f66fb12543702016; qrsc=3; __jdu=2045744036; TrackID=1wgah744lMsZWXTwC-q-Biyu37x7sxp8CseoInLtJZAVBG6zQJux5G9mvMGBhV3T3hMRrtlFHyNDJTPVf9ckESDMKHNDoZr-Wr6ETbyEoNGE; __jda=122270672.2045744036.1495102986.1541941006.1552825203.50; __jdc=122270672; __jdv=122270672|baidu|-|organic|not set|1552825203464; areaId=2; PCSYCityID=2; shshshfp=f1024c8fe38dc72f7cbd01d3e8120c95; xtest=428.cf6b6759; rkv=V0500; 3AB9D23F7A4B3C9B=J6H7CPQOXRM4BEEC34ESMFZSPDECXYZUVXQW2BOOW2P3QJXJOXSEAMVSMD5DV3NK7MR3DZNGSK2XAS6OUUNRDR532U; ipLoc-djd=2-2830-51800-0; __jdb=122270672.4.2045744036|50.1552825203; shshshsID=99df96dc146b5071a6934e385d2d7f33_4_1552826030047'}name=[]
p=[]def frontpage(n):url='https://search.jd.com/Search?keyword=电视机&enc=utf-8&qrst=1&rt=1&stop=1&page='+str(2*n-1)#html=requests.get(url,headers=header,cookies=cookies)html=requests.get(url,headers=head)html.encoding = 'utf-8'selector = etree.HTML(html.text)goods_name = selector.xpath('//div/a/em/text()[1]')for i in goods_name:print (i)name.append(i)price = selector.xpath('//div/strong/i')for i in price:print (i.text)p.append(i.text)print (len(goods_name))print (len(price))x1=selector.xpath('//li[19]/div/div[2]/strong/i')print ('###############################################')def backpage(n):a=time.time()b='%.5f'%aurl_last='https://search.jd.com/s_new.php?keyword=%E7%94%B5%E8%A7%86%E6%9C%BA&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E6%89%8B%E6%9C%BA&page='+str(2*n)+'&s='+str(48*n-20)+'&scrolling=y&log_id='+str(b)url_test='https://search.jd.com/s_new.php?keyword=%E7%94%B5%E8%A7%86%E6%9C%BA&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&page='+str(2*n)+'&s='+str(48*n-20)+'&scrolling=y&log_id='+str(b)html2=requests.get(url_test,headers=head)html2.encoding = 'utf-8'selector = etree.HTML(html2.text)goods_name = selector.xpath('//div/a/em/text()[1]')for i in goods_name:print (i)name.append(i)print (len(goods_name))price = selector.xpath('//div/strong/i')for i in price:print (i.text)p.append(i.text)print (len(price))print ('###############################################')for n in range(1,10):try:frontpage(n)except Exception as e:print(e)print ('fail')print (2*n-1)try:backpage(n)except Exception as e:print(e)print ('fail')print (2*n)df=pd.DataFrame({'goods_name':name,'price':p
})
print (df)end = time.clock()
print ('用时: %f '%(end-start))print('################保存csv####################')
df.to_csv('京东电视机.csv')

爬虫结果:

视频演示:

https://www.bilibili.com/video/av46769501/

还有一个我借鉴别人的chrome模拟访问方式(selenium)以实现ajax加载,但有一说一,真的很慢,建议多线程


# -*- coding: utf-8 -*-
from selenium import webdriver
from bs4 import BeautifulSoup
import time
print ('yes')
driver = webdriver.Chrome()
#s1='%E8%A3%A4%E5%AD%90'
s1='%E7%94%B5%E8%A7%86'
url='https://search.jd.com/Search?keyword='+s1+'&enc=utf-8&page=1'
driver.get(url)
print (driver.current_url)
t1 = time.time()
n = 10   #这里可以控制网页滚动距离
for i in range(1,n+1):s = "window.scrollTo(0,document.body.scrollHeight/{0}*{1});".format(5,i)print (s, len(driver.page_source),time.time()-t1)driver.execute_script(s)time.sleep(0.5)lis=driver.find_elements_by_class_name("gl-item")
for i in range(len(lis)):print (lis[i].find_element_by_class_name("p-name").text)print (lis[i].find_element_by_class_name("p-price").text)
#    print lis[i].textdriver.quit()
print ("end")

python爬取京东商品(使用cookies,header,xpath匹配),解决ajax。 后附有selenium模拟访问抓取网页方法和视频演示相关推荐

  1. python 爬虫动态网页的区别_Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取...

    区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...

  2. 网络爬虫pyppeteer、selenium模拟浏览器抓取数据

    项目场景: 1.抓取数据时,响应状态码为412,即状态码412含义为:Precondition Failed,服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个.这个状态码允许客户端 ...

  3. 爬取京东商品信息出现登陆页面的解决

    错误信息 原因:京东一般都有反爬 代码 import requests url = "https://item.jd.com/2967929.html" try:kv = {&qu ...

  4. python爬b站评论_Python爬虫入门教程 32-100 B站博人传评论数据抓取 scrapy

    1. B站博人传评论数据爬取简介 今天想了半天不知道抓啥,去B站看跳舞的小姐姐,忽然看到了评论,那就抓取一下B站的评论数据,视频动画那么多,也不知道抓取哪个,选了一个博人传跟火影相关的,抓取看看.网址 ...

  5. 3.使用Selenium模拟浏览器抓取淘宝商品美食信息

    # 使用selenium+phantomJS模拟浏览器爬取淘宝商品信息 # 思路: # 第一步:利用selenium驱动浏览器,搜索商品信息,得到商品列表 # 第二步:分析商品页数,驱动浏览器翻页,并 ...

  6. Python动态爬虫爬取京东商品评论

    Python 动态爬虫爬取京东商品评论 1. 概述 京东商城是Python爬虫初学者试手的经典平台,反爬虫程度较低,但评论采取了动态加载的方式,爬取京东商品评论是学习动态爬虫的一个极佳方法. 动态爬虫 ...

  7. Python爬取京东商品评论和图片下载

    Python爬取京东商品评论和图片下载 代码仅供学习使用,切勿扩散并且频繁爬取网站 贴上代码和注释,方便自己下次看 import requests import time import json im ...

  8. Selenium实战之Python+Selenium爬取京东商品数据

    实战目标:爬取京东商品信息,包括商品的标题.链接.价格.评价数量. 代码核心在于这几个部分: 其一:使用元素定位来获取页面上指定需要抓取的关键字: 其二:将页面上定位得到的数据永久存储到本地文件中. ...

  9. python制作爬虫爬取京东商品评论教程

    python制作爬虫爬取京东商品评论教程 作者:蓝鲸 类型:转载 本文是继前2篇Python爬虫系列文章的后续篇,给大家介绍的是如何使用Python爬取京东商品评论信息的方法,并根据数据绘制成各种统计 ...

最新文章

  1. 常见拒绝服务攻击行为特征与防御方法
  2. [转载]windows内存优化 没你想像那么美
  3. 服务器可以ghost备份吗_Ghost超详细图文教程 – 克隆备份系统全程图解(下部)...
  4. Java并发编程的艺术笔记(七)——CountDownLatch、CyclicBarrier详解
  5. [Qt教程] 第36篇 网络(六)UDP
  6. 故障恢复:一次底层超融合故障导致的异常处理
  7. Java的守护线程Daemon
  8. 使用Echarts制作散点图(Excel导入数据方式)
  9. 我的“技术架构”之旅
  10. rk3399_android7.1 USB Type-A的配置
  11. 读源码Apache-commons-lang3-3.1(一)
  12. DiskFileItemFactory
  13. StyleAI:色调、感情色彩量化、色彩交流API-PCCS颜色体系
  14. VS2012 MFC 入门
  15. JS设计模式 - 工厂模式
  16. 程序员如何写简历之简介篇(一)
  17. 骗子QQ微信在线查询系统网站源码
  18. c语言模拟抛骰子,c语言模拟抛1000000次骰子
  19. 两个妙招教你怎么拍照识别植物,增长见识
  20. 安装MATLAB_R2013b_X64_x32激活及破解方法

热门文章

  1. AccessibilityService-微信自动抢红包
  2. 【LC3】无重复字符的最长子串
  3. LaTex 把上下标符号放在正上和正下方公式
  4. 用DIV模拟TEXTAREA【QQ空间说说对话框】
  5. GD32E103/F303系列替换STM32F103
  6. 洛谷 P4147 玉蟾宫 题解【悬线dp】
  7. 驾驭新技术,赋能开发者 CSDN即将亮相2023开放原子全球开源峰会
  8. 腾达无线路由器网关和域名服务器,腾达(Tenda)路由器登录地址/网址是什么?
  9. 自学Java找到30w的工作
  10. 编写简单的html文件