小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。
使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/
(注)-i 后面是pip使用临时清华源下载 比较快 使用pip原来的源很慢所以做了一个换源处理
chromedriver下载地址:http://chromedriver.storage.googleapis.com/index.html找到与自己的谷歌游览器对应版本的版本版本对应关系这篇文章里面有:https://blog.csdn.net/BinGISer/article/details/88559532
京东流程。。。淘宝类似(就是多了一个登录验证)
PS:很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致自己放弃,为此我整理啦从基础的python脚本到web开发、爬虫、django、数据挖掘等【PDF等】需要的可以进Python全栈开发交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题有老司机解决哦,一起相互监督共同进步
一,要找到商场地址:https://www.jd.com/
二,模拟正常的查询(正常查询商品步骤:输入商品名,点击搜索,下拉查看商品,点击下一页查看更多的商品)怎么来的我不去做详细的说明(懒得打字,能用就行,懒得去做文章教人,实在想学习加我扣扣讨论)直接上代码,能看懂就看,看不懂的可以加扣扣:2511217211一起讨论(加好友验证备注:讨论)
爬取京东商品信息代码:
from selenium import webdriver
from time import sleep
import re
import os
# 搜索商品
def search_products():
# 输入商品名字
driver.find_element_by_xpath(\'//*[@id="key"]\').send_keys(keyword)
# 点击搜索
driver.find_element_by_xpath(\'//*[@class="form"]/button\').click()
sleep(10)
token = driver.find_element_by_xpath(\'//*[@id="J_bottomPage"]/span[2]/em[1]/b\').text
# 0代表所有匹配到的数字
token = int(re.compile(\'(\d+)\').search(token).group(1))
# 返回总页数
return token
# 下拉下滑条,加载数据
def drop_down():
for x in range(1, 11, 2):
sleep(1)
j = x / 10
js = \'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f\' % j
driver.execute_script(js)
# 获取商品信息
def get_product():
lis = driver.find_elements_by_xpath(\'//*[@class="gl-warp clearfix"]/li[@class="gl-item"]\')
for li in lis:
price = li.find_element_by_xpath(\'.//div[@class="p-price"]/strong/i\').text + \'元\'
info = li.find_element_by_xpath(\'.//div[@class="p-name"]/a/em\').text + li.find_element_by_xpath(
\'.//div[@class="p-name"]/a\').get_attribute(\'title\')
p_commit = li.find_element_by_xpath(\'.//div[@class="p-commit"]/strong/a\').text
p_shopnum = li.find_element_by_xpath(\'.//div[@class="p-shopnum"]/*\').text
p_img = li.find_element_by_xpath(\'.//div[@class="p-img"]/a/img\').get_attribute(\'src\')
print(info, price, p_commit, p_shopnum, p_img, sep=\'|\')
# 翻页
def next_page():
token = search_products()
num = 1
while (num != token):
driver.get(\'https://search.jd.com/Search?keyword={}&page={}\'.format(keyword, 2 * num - 1))
driver.implicitly_wait(10)
num += 1
drop_down()
get_product()
if __name__ == "__main__":
keyword = input(\'输入你想查找的商品名字:\')
driver_path = os.path.abspath(os.path.join(os.getcwd(), "..")) + "/Drive/chromedriver.exe"
driver = webdriver.Chrome(driver_path)
# 窗口最大化,防止数据丢失
driver.maximize_window()
driver.get(\'https://www.jd.com/\')
next_page()
爬取淘宝信息的代码from selenium import webdriverfrom time import sleep
import re
import os
# 搜索商品
def search_products():
driver.find_element_by_xpath(\'//*[@id="q"]\').send_keys(keyword)
driver.find_element_by_xpath(\'//*[@id="J_TSearchForm"]/div[1]/button\').click()
sleep(10)
token = driver.find_element_by_xpath(\'//*[@id="mainsrp-pager"]/div/div/div/div[1]\').text
# 0代表所有匹配到的数字
token = int(re.compile(\'(\d+)\').search(token).group(1))
return token
# 下拉下滑条,加载数据
def drop_down():
for x in range(1, 11, 2):
sleep(1)
j = x / 10
js = \'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f\' % j
driver.execute_script(js)
# 获取商品信息
def get_product():
lis = driver.find_elements_by_xpath(\'//div[@class="items"]/div[@class="item J_MouserOnverReq "]\')
for li in lis:
info = li.find_element_by_xpath(\'.//div[@class="row row-2 title"]\').text
price = li.find_element_by_xpath(\'.//a[@class="J_ClickStat"]\').get_attribute(\'trace-price\') + \'元\'
deal = li.find_element_by_xpath(\'.//div[@class="deal-cnt"]\').text
image = li.find_element_by_xpath(\'.//div[@class="pic"]/a/img\').get_attribute(\'src\')
name = li.find_element_by_xpath(\'.//div[@class="shop"]/a/span[2]\').text
site = li.find_element_by_xpath(\'.//div[@class="location"]\').text
print(info, price, deal, name, site, image, sep=\'|\')
# 翻页
def next_page():
token = search_products()
num = 0
while (num != token):
driver.get(\'https://s.taobao.com/search?q={}&s={}\'.format(keyword, 44 * num))
driver.implicitly_wait(10)
num += 1
drop_down()
get_product()
if __name__ == "__main__":
keyword = input(\'输入你想查找的商品名字:\')
driver_path = os.path.abspath(os.path.join(os.getcwd(), ".."))+"/Drive/chromedriver.exe"
driver = webdriver.Chrome(driver_path)
# 窗口最大化,防止数据丢失
driver.maximize_window()
driver.get(\'https://www.taobao.com/\')
next_page()
———很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致自己放弃,为此我整理啦从基础的python脚本到web开发、爬虫、django、数据挖掘等【PDF等】需要的可以进Python全栈开发交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题有老司机解决哦,一起相互监督共同进步
本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。