这次抓取京东某类商品的信息,这里我选择了手机品类。
使用scrapy爬虫框架,需要编写和设置的文件主要有phone.py , pipelines.py , items.py , settings.py , 其中主要编写的是前两个文件,最后一个文件主要设置破解反爬方法。
phone.py编写程序如下:
import scrapy
from scrapy.http import Request
from jd_phone.items import JdPhoneItem
import re
import urllib.request
class PhoneSpider(scrapy.Spider):
name = "phone"
allowed_domains = ["jd.com"]
start_urls = ['http://jd.com/']
#获取商品手机100页网址
def parse(self, response):
for i in range(1, 100):
url = "https://search.jd.com/Search?keyword=手机&enc=utf-8&page="+str(i*2-1)
yield Request(url=url,callback=self.product_url)
#获取每页商品链接
def product_url(self, response):
urls = response.xpath('//div[@class="p-name p-name-type-2"]/a[@target="_blank"]/@href').extract()
for i in urls:
url = response.urljoin(i)
yield Request(url=url, callback=self.product)
#获取商品的链接,名称,价格,评论数
def product(self, response):
#获取标题
#title = response.xpath("//li[@class='img-hover']/img/@alt").extract()#部分网页不行
title = response.xpath("//img/@alt").extract()
#获取id号,用来构造价格和评论的链接
pattern = r"(\d+)\.html$"
id = re.findall(pattern, re