爬取淘宝信息数据
首要需求先导入webdriver
from selenium import webdriver
webdriver支撑干流的浏览器,比方说:谷歌浏览器、火狐浏览器、IE浏览器等等
然后可以创建一个webdriver方针,经过这个方针就可以经过get方法恳, } i c : d B T求网站
driver = wd q n s Rebdriver.Chrome() # 创建driver方针
driR 5 aver.get('ht` z 2 @ :tps://www.& M Ebaidu.com') # 央求百度
接下来可以定义一个方法:search_product
一、selenium的简略介绍
1.selenium简介
selenium是一个用于检验网站的自动化# V | y ! 7 W ; q检验东西,支撑许多干流的浏览器,比方:谷歌浏览器、火狐浏览器、IE、Safari等。
2.支撑多个操作体系
如windows、Linux、IOS、Av 1 ! P ( M # g Vndroid等。
3、设备selenium
翻开终端输入
pip installx J S G + e V - Selenium
4、设备浏览器驱动
1、Chrome驱动文件下载:点击下载谷歌浏览器驱动
2、火狐浏览器驱动文件下载:点击下载geckodriver
5、装备环境变量
装备R G { } M `环境变量的方法非常简略,首要将下载, : b好的驱动进行解压,放到你设备Python的目录下,即可。
由于之前,在装备Python环境变量的时分,就将Python的目录放到我的电脑–v ; ( 2 : d {>特色–>体_ t r t = ? X系设置–>高档f n + & C ? I S f–>环境变量–>体系变量–>Path
二、selenium快速入门
1、selenium供应8种定位* J U 3 ] 3 –方法
1、id
2、name
3、class name
4、tag name
5、link text
6、partial link text
7、7 y { { ( Rxpath
8、cssn K / y r % selector
2、定位元素的8中方法详解
定义一个元素 | 定位多个元素 | 含义 |
---|---|---|
find_element_by_id | find_elements_by_id | 经过元素的id定位 |
find_element_by_name | find_elements_by_name | 经过元素1 B s oname定位 |
find_element_b] @ H v ny_xpath | find_U h Y J 4 W {elements_by_xpath | 经过xpath表达式定位 |
find_element_by_link_text | find_elements_by_link_tex{ k s S F G ^ w Wt | 经过完好超链接定位 |
find_element_by_partial_link_text | find_elements_by_partial_link_text | 经过部分链接定位 |
find_element_by_tag_name | find_elements_by, P 4 7 3_tag_name | 经过标签定位 |
find_element_by_class_name | find_elements_by_class_name | 经过类名进行定位 |
find_element_by_css_selector | find_elements_by_css_selector | 经过css选择器进行定位 |
3、selenium库下webdriver模块常用的方法与l 5 g L n K )运用
控制浏览器的一些方法
方法 | 说明 |
---|---|
set_w$ I x u e G 8 = }indow_size() | 设置浏览器的巨细 |
back() | 控制浏览器撤退O 4 7 |
forward() | 控制浏览器跋涉 |
refresh, ] C() | 改写当时页面 |
clear() | 铲除文本 |
send_keys (value) | 模仿按键输入 |
click() | 单击元素 |
submit() | 用于提交表单 |
get_attribute(name) | 获取g * L元素特色值 |
text | 获取元素的文本 |
4、代码实例
from selenium import webdriver
importt t c z time
# 创建Chrome浏览器方针,这会在电脑中翻开一个窗口
browser = webdriver.Chrome()
# 经过浏览器向服务器建议恳J T ? ~ l = t Z M求
browser.get('https://www.baiU 8 h -duX J ^ h { b ! = V.c? & % h 7 J $ H Mom')
time.sleep(3)
# 改写浏览器
browser.refres? B ~ Xh()
# 最大化浏览器窗口
browser.maximK a B Q d Cize_window()
# 设置链接内容
element = browser.find_element_by_link_text('抗击肺炎')
# 点击'抗击肺炎'
element.click()+ 7 O D g ~ x ^
关于selenium的简略介绍就先到这儿了,更多具体内容我们m $ n ~ f w c可以去seleni? m M t Fum官方文档查看。点击查看selenium官方文档
爬取淘宝数据
从上图,可以看到需求获取的信息是:价格、产O y & w品名称、付款人数、店肆名称。} ) w P
现在我们开始进入主题。
首要,Q 4 = O n需求输入你要查找产品的内容,然后依据内容去查找淘宝信息,终究提取信息并保存。
1、搜素产品
我在这儿定义提个查找产品的函数和一个主函数~ A , i x t。
查找产品
在这儿需求创建一个浏览器方针,并且依据该方针的get方法来发送央求。
从上图可以发现查找框的id值为q,那么这样就简略许多了,有HTML基础的朋友必定知道id值是唯一的。
经过id值可以获取到文本框的方位,并传入参数,然后点击查找按钮。
从上图可以发现查找按钮在一个类里面,那么可以经过这个类来定位到查找按钮,并履行点击操作。
当点击查找按钮之后,网页便会跳转/ O F到登录界面,要求我们登录,如下图所示:
登录成功后会发现,里面的数据总共有100页面。
上图是前三页的url地址,你会发现其实并没有太大的改变,经过测# R , s 3 ) P验发现,实在有效的参数是框起来的内容,它的改变会导致页面的跳转,很明显第一页的s=0,第二页s=44,第三页s=w _ ` . R88,以此类推,之后就可以轻松做到翻页了。
搜搜产品的代码如下:
def search_product(key_word):
'''
:param key_word: 查找关键字
:return:
'''
# 经过id值来获取文本框的方位,并传入关键字
browser.find_element_by_id('q').send_keys(key_word)
# 经过class来获取到查找按钮的方位,并} : % ?点击
browser.find_element_by_cK 8 Y 4 G Q f Olass_name('2 , [ { @btn-search').click()
# 最大化窗口
browser.maximize_- 3 n B % / b Awindow()
time.sleep(15)
page = browser.find_element_bJ , w 9 3 c Iy_xpath('//div[@clasW C ] tsN p l p="total"]').text # 共. L i V D m r ^ [ 100 页,
page = re.findall('(d+)', page)[0] # findall回来一个列表
return page
2、获取产品信息并保存
获取产品信息相对比较简略,可以经过xpath方法来获取数据。在这儿我就不在论述。在这边我创建了一个函数 _ vget_product来获取并保存信息。在保存信息的过程中运用到了csv模块,目的是将信息保存到csv里面。
def get_product():
divs = dri@ u E R ^ R U %ver.find_elements_by_xpath(R : 0'//dm ~ Q c , y _iv[@class="items"]/div[@class="item J_MouserOK 1 ? U M r RnverReq "]'3 s & / E = , 6) # 这儿回来的是列表,留意:elements
for div in divs:
info = di- 8 Gv.find. f : r K + ]_element_by_xpath('.//div[@class="row row-P , 3 H v n (2 title"]/a'); E x k 9 n.text
price = div.find_element_by_xpat6 6 g j B :h('.//strong').te& 4 X Z lxt + '元'
nums = div.find_element_by_xpath('.//div[@class="_ . . D S -deal-cnt"]').text
names = div.fi? P y M und_element_by_xpath('./O p `/div[@class="sh 6 5 k Gop"]/a').text
print(info, price, nums, names,sep='|d 7 ; $ z')
with open('data3.csv', mode='a', newline='', encoding='utf-8') as file:
csv_writer = csv.writer(file, delimiter=',') # 指定分隔符为逗号
csv_writerm o } % H i Q.writerow([info, price, nums, names])
3、结构URL实现. D B d * 3翻页爬取
从上面的图片中可以发现接连三页URL的地址,其实实在改变并不是许多,经过检验发现,只要q和s两个参数是有用的。
结构出的url:s.taobao.com/search?q={}…
由于q是你要查找的产品,s是设置翻页的参数。这段代码就放在了主函数里面
def main():
browser.get('htth N } zps://www.tj R p O Zao$ 3 V l { R qbL U ! b K Z o eao.com/') # 向服务器发送央求
page = search_product(key_worZ 5 Id)
print('正在爬取第7 ; 4 f ^ a 21页的数据')
get_producH q % L & ^ ` 1t() # 现已取得第W q d . 6 9 11页的数据1 = s N $ N
page_nums = 1
while page_nums != page:
prM j n 8 B # 4 3 cint('*'*100)
prr 5 { ~ K K xint('正在爬取第{}页的数据'.format(page_nums+1))
browser.get('https://s.taobao.com/search?q={}&s={}'.format(key_word, page_nums*44))
browser.implicitly_wait(10) # 等候10秒
get` U u ! _product()
page_num. g J % U -s += 1
终究成果,如下图所k # $ p K示:
问题咨询
假设在这儿我们有不理解的当地可以( M Z G向我提出。可以在文章下方留言,也可以Z s A n R # O U t添加我的微信
代码* } u { : T T $获取
我们假设需求获取源代码的话可以重视我的H H s r群众号,在群众号里面文章会更加的具体。
视频教程
本次爬取淘宝信息的视频教程现已上传到; E H u * @了B站,点击观看视频教程里面有许多的爬虫视频和web安全浸透的视频,欢迎我们观看并留言!!
称谢
好了,又到了该说再会的时分了,希望我的文章可以给你带来常识,带给你帮助。同时也感谢你可以抽出你名贵的时间来阅览,创造不易,假设你喜欢的话,点个重视再走吧。更多精彩内容会在后续更新,你的支撑就是我创造的动力,我往后也会极力给我们书写出更加优质的文章、。