网页抓取qq(python学习二十五——简单数据抓取五学习内容:python )

优采云 发布时间: 2022-04-01 10:03

  网页抓取qq(python学习二十五——简单数据抓取五学习内容:python

)

  学习目标:Python学习二十五——简单数据捕捉五 学习内容:

  1、更改url方式抓取一整页60条京东产品(即page=1,page=2)信息

  2、请求奇数页(page=1)之后,下一个偶数页(page=2))的链接是基于奇数链接的加上最后30个商品编号,可以显示60条商品信息

  3、使用自动化软件获取京东页面的整页(即page=1,page=2)60条产品信息

  4、自动输入用户信息登录超级鹰网站

  5、使用iframe元素自动打开QQ空间密码登录页面

  1、改变url的release抓取一整页(即page=1,page=2)information

  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()

  2、请求奇数页(page=1)之后,下一个偶数页(page=2))的链接是基于奇数链接的加上最后30个商品编号,可以显示60条商品信息

  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)

  3、使用自动化软件获取京东页面的整页(即page=1,page=2)60条产品信息,并自动输入用户信息登录超鹰< @网站

  1、一次生成ajax替换后京东网页60条的全部数据

  import re

# 延迟使用的包

import time

from lxml import etree

# 引入使用该驱动的包

from selenium import webdriver

# 找到本地驱动软件所在位置并启动该驱动软件

dr = webdriver.Chrome(&#39;F:\\pycharm\\anicod\\chromedriver.exe&#39;)

# 利用该驱动软件打开京东的商品页面

dr.get(&#39;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&#39;)

# 将页面全部显示,即展示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(&#39;//li/div/div[2]/strong/i/text()&#39;)

# 打印并展示商品价格信息,还有该页商品总数

print(len(price1), price1)

  4、自动输入用户信息登录超级鹰网站

  建议:浏览器缩放为100%,那么显示缩放也应为100%

  5、使用iframe元素自动打开QQ空间密码登录页面

  from selenium import webdriver

# 引入智能延迟的包

from selenium.webdriver.support.ui import WebDriverWait

import time

dr = webdriver.Chrome(&#39;F:\\pycharm\\anicod\\chromedriver.exe&#39;)

dr.get(&#39;https://qzone.qq.com/&#39;)

dr.maximize_window()

# 首先找到iframe元素以便打开密码登录页面

iframe = dr.find_element_by_tag_name(&#39;iframe&#39;)

# 选择iframe元素

dr.switch_to.frame(iframe)

time.sleep(1)

# 智能延迟等待密码登录页面打开

WebDriverWait(dr, 10).until(lambda the_driver:

the_driver.find_element_by_xpath(&#39;//*[@id="switcher_plogin"]&#39;).is_displayed())

# xpath获取到密码登录摁钮并点击

dr.find_element_by_xpath(&#39;//*[@id="switcher_plogin"]&#39;).click()

# xpath获取到用户名输入框并输入用户名

dr.find_element_by_xpath(&#39;//*[@id="u"]&#39;).send_keys(&#39;qq号&#39;)

# xpath获取到密码输入框并输入密码

dr.find_element_by_id("p").send_keys("qq密码")

# 点击登录

dr.find_element_by_id("login_button").click()

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线