多特瑞商品資訊抓取(scrapy爬蟲框架)

2021-09-02 17:07:32 字數 3063 閱讀 1277

1、spider目錄下爬蟲專案(duo_te_rui.py)

import scrapy

import re

from duo_te_rui.items import duoteruiitem

class duoteruispider(scrapy.spider):

# 爬蟲專案名

name = 『duo_te_rui』

# 爬蟲允許的域

allowed_domains = [『doterra.cn』]

# 爬蟲的起始url

start_urls =

# 替換所有的html標籤

def re_html(self, data):

# 替換抓取資料中的html標籤

try:

message = str(data)

re_h = re.compile(']*>') # html標籤

ret1 = re_h.sub('', message)

ret2 = re.sub(r'\n', '', ret1)

ret3 = re.sub(r'\u3000', '', ret2)

return ret3

except:

pass

def start_requests(self):

for i in range(1, 4):

yield scrapy.request(url=''.format(i), callback=self.parse)

def parse(self, response):

# 精油列表

item_list = response.xpath('//div[@class="main"]/div[2]/div[2]/ul/li')

# print(len(item_list))

# 建立item例項

item = duoteruiitem()

# 遍歷精油列表,獲取單個物品資料

for data in item_list:

item['精油名'] = data.xpath('./div/h2/a/text()').extract_first()

item['鏈結'] = data.xpath('./a/img/@src').extract_first()

item['精油規格'] = data.xpath('./div/div[2]/span/text()').extract_first()

print(item)

# # 返回資料給引擎

# yield item

pass

2、將抓取資料匯入資料庫(新建乙個目錄templates(duo_te_rui.py))

import json

import requests

import sys

import time

import chardet

from sqlalchemy import create_engine

from sqlalchemy import column

from sqlalchemy import integer

from sqlalchemy import string

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy.orm import sessionmaker

engine = create_engine(「mysql+pymysql:

encoding=『utf-8』, echo=true)

session_class = sessionmaker(bind=engine) # 例項和engine繫結

session = session_class() # 生成session例項,相當於游標

base = declarative_base() # 生成orm基類

class parsedata(base):

tablename= 『jing_you_data』 # 表名

id = column(integer, primary_key=true)

jing_you_name = column(string(50))

image_url = column(string(250))

gui_ge = column(string(25))

def __init__(self):

# 建立表結構(這裡是父類調子類)

base.metadata.create_all(engine)

# 儲存到mysql資料庫中去

def insert(self):

try:

session.add(self) # 把要建立的資料物件新增到這個session裡, 一會統一建立

session.commit() # 現此才統一提交,建立資料

except exception as e:

print(e)

session.rollback()

def to_mysql(self, item):

data = item

self.jing_you_name = data['精油名']

self.image_url = data['鏈結']

self.gui_ge = data['精油規格']

self.insert()

pass

3、在pipelines裡面將資料傳入templates目錄下的duo_te_rui.py,將資料匯入mysql資料庫

from duo_te_rui.templates.duo_te_rui import *

class duoteruipipeline(object):

def process_item(self, item, spider):

parse = parsedata()

parse.to_mysql(item)

return item

python抓取京東的商品資訊

1.安裝python開發環境 2.requests庫 beautifulsoup庫 3.具備python一定基礎 1.經過分析可以知道keywork為搜尋關鍵字 2.page引數為篩選商品的頁下標,每頁30條資料 3.ev引數為篩選商品的 引數 1.我們發現商品的資料是訪問url直接返回來的 所以我...

如何利用Xpath抓取京東網商品資訊

html檔案其實就是由一組尖括號構成的標籤組織起來的,每一對尖括號形式乙個標籤,標籤之間存在上下關係,形成標籤樹 xpath 使用路徑表示式在 xml 文件中選取節點。節點是通過沿著路徑或者 step 來選取的。京東網 商品 商品資訊在京東官網上的部分網頁原始碼如下圖所示 資訊在京東官網上的網頁原始...

爬取京東商品資訊

爬取京東商品資訊 from selenium import webdriver from selenium.webdriver import chromeoptions from selenium.webdriver import actionchains from selenium.webdriv...