1、改变url的放式抓取到一整页60个京东商品(即page=1,和page=2)的信息
2、请求一个奇数页面(page=1)之后,紧接着的偶数页面(page=2)的链接在奇数链接的基础上加上后30个商品的编号,就能显示60个商品信息
3、利用自动化软件获取到京东页面一整页(即page=1,和page=2)60个商品信息
import requests
import re
import pymysql
from lxml import etree
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
connectes = pymysql.connect(database='zhuaqu', user='root', password='1234', host='127.0.0.1', charset='utf8')
cursor = connectes.cursor()
for i in range(3, 5):
# 将i转化为字符串
j = str(i)
a = 'https://search.jd.com/Search?keyword=大地瓜&qrst=1&stock=1&page=P&s=57&click=0'
# 用sub将i的值替换到page=P处
b = re.sub('P', j, a)
source = requests.get(b, headers=headers).text
base = etree.HTML(source).xpath('// *[ @ id = "J_goodsList"] / ul / li')
for i in base:
price = i.xpath('div / div[2] / strong/i/text()')
goods_name = i.xpath(' div / div[3] / a / em/text()')
dian = i.xpath('div / div[5] / span / a/text()')
# 将数据存入数据库
sql = 'insert into goods(price, goods_name, goods_dian ) value ("{}", "{}", "{}")'.format(price, goods_name, dian)
# 用ping命令在每次传输之前测试与数据库的连通性
connectes.ping(reconnect=True)
cursor.execute(sql)
connectes.commit()
connectes.close()
import requests
import re
from lxml import etree
# header头
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36',
'referer': 'https://search.jd.com/Search?keyword=%E5%A4%A7%E5%9C%B0%E7%93%9C&qrst=1&wq=%E5%A4%A7%E5%9C%B0%E7%93%9C&stock=1&page=3&s=56&click=0'
}
# 请求奇数页面page为3的网页代码
source = requests.get('https://search.jd.com/Search?keyword=%E5%A4%A7%E5%9C%B0%E7%93%9C&qrst=1&wq=%E5%A4%A7%E5%9C%B0%E7%93%9C&stock=1&page=3&s=56&click=0', headers=headers).text
# 用正则在数页面的接口中匹配出后三十个商品的编码
demo = re.compile("wids:'(.*?)'")
lists = demo.findall(source)
# 将不匹配出的编码加到上一个奇数链接后面,组成偶数页面的链接
source1 = requests.get('https://search.jd.com/Search?keyword=%E5%A4%A7%E5%9C%B0%E7%93%9C&qrst=1&wq=%E5%A4%A7%E5%9C%B0%E7%93%9C&stock=1&page=3&s=56&click=0'+ lists[0], headers=headers).text
# 分别用xpath匹配出商品的价格
price = etree.HTML(source).xpath('//*[@id="J_goodsList"]/ul/li/div/div[2]/strong/i/text()')
price1 = etree.HTML(source1).xpath('//*[@id="J_goodsList"]/ul/li/div/div[2]/strong/i/text()')
# 最后打印上下页即京东页面一整页的60个商品的价格
print(price)
print(price1)
1、一次性生成京东网页ajax替换后的页面即60个商品的全部数据
import re
# 延迟使用的包
import time
from lxml import etree
# 引入使用该驱动的包
from selenium import webdriver
# 找到本地驱动软件所在位置并启动该驱动软件
dr = webdriver.Chrome('F:\\pycharm\\anicod\\chromedriver.exe')
# 利用该驱动软件打开京东的商品页面
dr.get('https://search.jd.com/Search?keyword=%E5%A4%A7%E5%9C%B0%E7%93%9C&qrst=1&wq=%E5%A4%A7%E5%9C%B0%E7%93%9C&stock=1&page=3&s=56&click=0')
# 将页面全部显示,即展示60个商品的页面(完成ajax页面替换后的整个页面)
dr.maximize_window()
# 用js代码模拟滑动网页滑块,将页面滑到最底部
js = "var q=document.documentElement.scrollTop=10000"
# 执行该js代码
dr.execute_script(js)
# 延迟2s
time.sleep(2)
# 获取驱动打开页面的源码
source = dr.page_source
# 在源码中用xpath匹配出需要的价格信息
price1 = etree.HTML(source).xpath('//li/div/div[2]/strong/i/text()')
# 打印并展示商品价格信息,还有该页商品总数
print(len(price1), price1)
2、自动输入用户信息登录超级鹰网站
import re
import time
from lxml import etree
# 引入使用该驱动的包
from selenium import webdriver
# 找到本地驱动软件所在位置并抵用该驱动软件
dr = webdriver.Chrome('F:\\pycharm\\anicod\\chromedriver.exe')
# 打开超级鹰登录页面
dr.get('https://www.chaojiying.com/user/login/')
# 利用驱动找到用户名的输入框,先清空框里的信息
dr.find_element_by_xpath('/html/body/div[3]/div/div[3]/div[1]/form/p[1]/input').clear()
# 利用驱动找到用户名的输入框,然后填入用户名信息send_keys包含的内容
dr.find_element_by_xpath('/html/body/div[3]/div/div[3]/div[1]/form/p[1]/input').send_keys('超级鹰登录密码')
# 利用驱动找到密码的输入框,先清空框里的信息
dr.find_element_by_xpath('/html/body/div[3]/div/div[3]/div[1]/form/p[2]/input')
# 利用驱动找到密码的输入框,然后填入密码信息send_keys包含的内容
dr.find_element_by_xpath('/html/body/div[3]/div/div[3]/div[1]/form/p[2]/input').send_keys('超级鹰登录用户名')
# 延迟10s,方便页面打开后手动输入图片中的验证码
time.sleep(10)
# 利用驱动找到登录的点击摁钮,并点击摁钮登录到用户界面
dr.find_element_by_xpath('/html/body/div[3]/div/div[3]/div[1]/form/p[4]/input').click()