selenium/requess爬取京东手机商品的详细信息1~selenium!!
前言
因为我也是个学生,所以代码可能会有点繁琐,我们都是超能100,一点点积累进步,其实有很多的地方可以简化,因为我是要去了解每一个语法的应用场景,所以会尽可能的使用更多的语法,可以简化的地方我会给大家在注释标注,希望大家也能自己多动手,因为我是学大数据的,所以相信一个道理,所有的东西都要化繁为简,能把100浓缩到99直到1是一个很艰难的过程,要坚持住,多思考。
数据信息
## 爬取商品介绍用于后续分析
import csv
import json
import re
import time
from selenium import webdriver
#声明插件的路径
driver_path = r'F:\Pycharm\chromedriver.exe'
#声明一个谷歌插件,不加载图片#不加载图片节省时间
options = webdriver.ChromeOptions()
options.add_experimental_option('prefs', {
'profile.managed_default_content_settings.images': 2})
#设置属性
driver = webdriver.Chrome(executable_path=driver_path,options=options)
#url
#声明一个list,用来存储dict
data_list = []
#定义
def start_s ():
with open('data_csv.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
next(reader)
for i in reader:
st = i[2]
url = st
print('====='+url+'====')
driver.get(url)
#sleep睡眠对于很多网页是必须的,加上headers有时候也是需要的,因为很多的大型网站都是由反爬措施的。
time.sleep(5)
lits = driver.find_elements_by_class_name('p-parameter')
print(lits)
for li in lits:
# goods_name = li.find_elements_by_xpath('.//ul[@class="parameter2 p-parameter-list"]/li')[0].text
try:
goods_name = li.find_element_by_xpath('.//ul[@class="parameter2 p-parameter-list"]/li[contains(text(), "商品名称")]').text
pattern = r"商品名称:"
goods_name = re.sub(pattern, "", goods_name, flags=re.S)
except Exception as e: goods_name = None
try:
goods_id = li.find_element_by_xpath('.//ul[@class="parameter2 p-parameter-list"]/li[contains(text(), "商品编号")]').text
pattern = r"商品编号:"
goods_id = re.sub(pattern,"",goods_id,flags=re.S)
except Exception