使用selenium尝试爬取寻宝网账号信息1.0

发布时间 2023-10-08 08:29:17作者: 哈哈你够了
 1 import time
 2 import re
 3 import requests
 4 from selenium.webdriver import Edge
 5 from selenium.webdriver.common.by import By
 6 from selenium.webdriver.common.keys import Keys
 7 headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.43',
 8          'cookie':'JSESSIONID=831A5ECA7F3AAC9A282AB0E7A9CDB491; uvid=1881565932_1691460962_67; Hm_lvt_a8fda29303267d5a0517d9573ac30d91=1691460963; HWWAFSESID=e6dd4889abfd884dd2; HWWAFSESTIME=1696678400186'}
 9 
10 # m=input('输入大区')
11 # time.sleep(20)
12 web=Edge()
13 web.get('http://www.xunbao178.com/wmgj/')
14 time.sleep(5)
15 el=web.find_element(by=By.XPATH,value='//*[@id="left_share"]/div[1]/div[2]/div[1]/div[2]/div/span[1]')  #找到双线
16 el.click()
17 time.sleep(3)
18 el_1=web.find_element(by=By.XPATH,value='//*[@class="ser_area_list"]//a/span[text()="天光"]')  #找到大区 这里可以自己输入大区
19 el_1.click()
20 time.sleep(3)
21 el_2=web.find_element(by=By.XPATH,value='//*[@id="searchBox"]').send_keys('妖精',Keys.ENTER)  #找到输入框 输入妖精
22 time.sleep(5)
23 page_num = web.find_element(by=By.XPATH, value='//*[@class="page"]/span[1]').text  # 找到页码
24 pattern = re.compile('共(.*?)页', re.S)  # 提取页码数字 方便循环
25 n = re.findall(pattern, page_num)[0]    #提取页码数字
26 num=int(n)
27 # print(n)
28 
29 
30 def next_page():
31     el_4=web.find_element(by=By.XPATH,value='//*[@class="page"]//span/a[text()="下一页"]')# 找到下一页,这里使用是文本查找
32     el_4.click()    #点击下一页
33 
34 def get_weapon(commid,m):      #获取武器的名字
35     url_1='http://www.xunbao178.com/wmgj/buyDetail.gsp?commid='+commid+'&page='+str(m)+'&keyWord=%E5%A6%96%E7%B2%BE&orderBy=default'    #拼凑账号详细地址
36     xml=requests.get(url=url_1,headers=headers).text
37     pattern=re.compile('<item id=.*?equipmask="1".*?name=(".*?").*?count="1"',re.S)
38     name=re.findall(pattern,xml)[0] #提取武器的名字
39     # print(name)
40     time.sleep(2)
41     with open('d:/weapon_name.txt','a',encoding='utf-8')as f:   #保存武器名字
42         f.write(name+'\n')
43         
44 def get_one_page():     #获取一整页的commid
45     # print(page_number)
46     el_3=web.find_elements(by=By.XPATH,value='//*[@id="right_buy"]/div[3]/dl')#获取所有的commid
47     for m in el_3:  #循环获取每一个commid
48         commid=m.get_attribute('data-commid')
49         # print(commid)
50         # print(el_4)
51         get_weapon(commid,m)
52     with open('d:/weapon_name.txt','a',encoding='utf-8')as f:   #添加空格
53         f.write('\n')
54 
55 
56 for k in range(1,num+1):    #页码之间循环,判断页数 是否需要点击下一页
57     if k <=num-1:   
58         get_one_page()
59         print(f'第{k}页下载完成')
60         time.sleep(3)
61         next_page()
62     else:
63         get_one_page()
64         print('全部下载完成了')