我的第乙個Scrapy 程式 爬取當當網資訊

2021-09-22 01:17:58 字數 3776 閱讀 5096

前面已經安裝了scrapy,下面來實現第乙個測試程式。

scrapy是乙個爬蟲框架,他的基本流程如下所示(下面截圖來自網際網路)

簡單的說,我們需要寫乙個item檔案,定義返回的資料結構;寫乙個spider檔案,具體爬取的資料程式,以及乙個管道 pipeline 檔案,作為後續操作,比如儲存資料等等。

scrapy startproject dangdang
scrapy genspider -t basic dd dangdang.com這樣他會自動建立乙個爬蟲檔案,結構如下所示:

前面第二步已經自動生成了乙個模板,我們直接修改就行。

item['title']=response.xpath(u"//a[@dd_name='單品標題']/text()").extract()

item['url']=response.xpath("//a[@dd_name='單品標題']/@href").extract()

text = response.body

# content_type = chardet.detect(text)

# if content_type['encoding'] != 'utf-8':

# text = text.decode(content_type['encoding'])

# text = text.encode('utf-8')

# print(text)

yield item

for i in range(2,20):

url=''%i

yield request(url,callback=self.parse)

為了使用pipeline,配置檔案需要做個小修改,我順便關掉了對robot檔案的確認

settings.py

robotstxt_obey = false

item_pipelines =

pipeline.py

# -*- coding: utf-8 -*-

# define your item pipelines here

## don't forget to add your pipeline to the item_pipelines setting

# see:

import pymysql

class

dangdangpipeline

(object):

defprocess_item

(self, item, spider):

conn=pymysql.connect(host='127.0.0.1',user='root',passwd='root',db='dangdang',use_unicode=true,charset='utf8')

for i in range(0,len(item['title'])):

title=item['title'][i]

link=item['url'][i]

comment=item['comment'][i]

print(type(title))

print(title)

# sql="insert into dd(title,link,comment) values ('"+title+"','"+link+"','"+comment+"')"

sql = "insert into dd(title,link,comment) values('" + title + "','" + link + "','" + comment + "')"

try:

conn.query(sql)

except exception as err:

pass

conn.close()

return item

我最後的資料要儲存到mysql裡面,python裡面可以通過pymysql進行操作。我提前在mysql命令列介面裡面建立了乙個資料庫和空表

mysql>

create database dangdang;

mysql>

create table dd(id int auto_increment primary, title varchar(100), link varchar(100), comment varchar(32));

scrapy crawl dd

如果不想看日誌 可以使用

scrapy crawl dd --nolog

test.py

#!/usr/bin/env python

#! -*- coding:utf-8 -*-

# author: yuan li

import pymysql

conn=pymysql.connect(host='127.0.0.1',user='root',passwd='root',db='dangdang',use_unicode=true,charset='utf8')

cursor = conn.cursor(cursor=pymysql.cursors.dictcursor)

#sql查詢

cursor.execute("select * from dd")

row=cursor.fetchall()

for i in row:

print(i)

conn.close()

結果測試成功

scrapy 我的第乙個scrapy爬蟲

import scrapy from scrapy.linkextractors import linkextractor linkextractor是用來指定頁面提取規則的extract links 是用來獲取連線的 from items import baiduyueduitem 這是我的用來封...

我的第乙個程式

我的第乙個vc程式終於寫完了,花了2周,之前從沒有用vc寫過程式,也沒讀過什麼程式,只是在看書,看了幾百頁 mfc windows程式設計 正好有個機會,老師讓寫個vc程式,就試著寫了。程式的功能是不同地方的access的更新的記錄整合到一台機子上的access中,支援斷網自動連線,用的是socke...

我的第乙個爬蟲(爬取糗百的段子)

coding utf8 import requests from bs4 import beautifulsoup import os import codecs import mysqldb def mysql title conn mysqldb.connect host 127.0.0.1 p...