使用pip3安装Scrapy以后,在命令行里输入
scrapy shell https://www.baidu.com
返回结果
2018-12-05 18:19:23 [scrapy.utils.log] INFO: Scrapy 1.5.1 started (bot: scrapybot)
2018-12-05 18:19:23 [scrapy.utils.log] INFO: Versions: lxml 4.2.5.0, libxml2 2.9.8, cssselect 1.0.3, parsel 1.5.1, w3lib 1.19.0, Twisted 18.9.0, Python 3.7.0 (default, Jul 23 2018, 20:22:55) - [Clang 9.1.0 (clang-902.0.39.2)], pyOpenSSL 18.0.0 (OpenSSL 1.1.0j 20 Nov 2018), cryptography 2.4.2, Platform Darwin-17.7.0-x86_64-i386-64bit
2018-12-05 18:19:23 [scrapy.crawler] INFO: Overridden settings: {'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter', 'LOGSTATS_INTERVAL': 0}
2018-12-05 18:19:23 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats',
'scrapy.extensions.telnet.TelnetConsole',
'scrapy.extensions.memusage.MemoryUsage']
2018-12-05 18:19:23 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
'scrapy.downloadermiddlewares.retry.RetryMiddleware',
'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
'scrapy.downloadermiddlewares.stats.DownloaderStats']
2018-12-05 18:19:23 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
'scrapy.spidermiddlewares.referer.RefererMiddleware',
'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
'scrapy.spidermiddlewares.depth.DepthMiddleware']
2018-12-05 18:19:23 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2018-12-05 18:19:23 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2018-12-05 18:19:23 [scrapy.core.engine] INFO: Spider opened
2018-12-05 18:19:23 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.baidu.com> (referer: None)
[s] Available Scrapy objects:
[s] scrapy scrapy module (contains scrapy.Request, scrapy.Selector, etc)
[s] crawler <scrapy.crawler.Crawler object at 0x10f91ca20>
[s] item {}
[s] request <GET https://www.baidu.com>
[s] response <200 https://www.baidu.com>
[s] settings <scrapy.settings.Settings object at 0x10f91c780>
[s] spider <DefaultSpider 'default' at 0x10fbd7da0>
[s] Useful shortcuts:
[s] fetch(url[, redirect=True]) Fetch URL and update local objects (by default, redirects are followed)
[s] fetch(req) Fetch a scrapy.Request and update local objects
[s] shelp() Shell help (print this help)
[s] view(response) View response in a browser
成功打开后会自动进入命令模式
看response
>>> response
<200 https://www.baidu.com>
浏览器里看爬取的网页
>>> view(response)
True
然后弹出网页
![](https://img.haomeiwen.com/i730751/9e11f4415746922b.png)
xpath筛选元素
>>>response.xpath('//*[@id="u1"]/a/text()').extract()
['新闻', 'hao123', '地图', '视频', '贴吧', '更多产品']
这里面会有个小问题
view(response)
打开的浏览器网页,审查元素输入 //*[@id="u1"]/a/text()
,返回7个结果;而命令行里打response.xpath('//*[@id="u1"]/a/text()').extract()
,
只返回6个结果,换言之登录按钮审查不到。
![](https://img.haomeiwen.com/i730751/2c1d5b0e7e870cae.png)
估计是异步js的问题,上splash看看
scrapy shell http://localhost:8050/render.html\?url\=http%3A//www.baidu.com\&wait\=1
![](https://img.haomeiwen.com/i730751/903227d345b1605e.png)
这回又变成9个了
命令行里再测一下
>>>response.xpath('//*[@id="u1"]/a/text()').extract()
['新闻', 'hao123', '地图', '视频', '贴吧', '学术', '登录', '设置', '更多产品']
也是9个。
9个,看来本地网页对象里也有异步js的话,js还是会调用里面的请求的。
开始一个scrapy项目
在命令行里用cd定位到目标文件夹,然后输入Scrapy startproject 项目名称
即可创建项目
➜ ~ cd /Users/miraco/PycharmProjects
➜ PycharmProjects Scrapy startproject my_1st_project
New Scrapy project 'my_1st_project', using template directory '/usr/local/lib/python3.7/site-packages/scrapy/templates/project', created in:
/Users/miraco/PycharmProjects/my_1st_project
You can start your first spider with:
cd my_1st_project
scrapy genspider example example.com
➜ PycharmProjects
![](https://img.haomeiwen.com/i730751/28cf412485964b8e.png)
![](https://img.haomeiwen.com/i730751/4ddadfd1cfb5541c.png)
![](https://img.haomeiwen.com/i730751/57ea16e868bc44aa.png)
![](https://img.haomeiwen.com/i730751/d7c67fc3edabad0a.png)
在里面输入下列代码:
import scrapy
class GanjiSpider(scrapy.Spider):
name = 'zufang'
start_urls = ['http://bj.ganji.com/wblist/haidian/zufang/'] #这是个列表、可以放多个
def parse(self, response):
title_list = response.xpath('.//div[@class="f-list-item ershoufang-list"]//dd[@class="dd-item title"]/a/text()').extract()
money_list = response.xpath('.//span[@class="num"]/text()')
for i,j in zip(title_list,money_list):
print(i,":",j)
保存文件以后在Terminal里面输入
$ scrapy list
之后就会返回了一个爬虫那就是zufang
![](https://img.haomeiwen.com/i730751/b843db31f5152ef3.png)
teminal里面输入:
$ scrapy crawl zufang
返回结果:
SobersMacBookPro2016:my_1st_project miraco$ scrapy crawl zufang
2018-12-17 21:50:30 [scrapy.utils.log] INFO: Scrapy 1.5.1 started (bot: my_1st_project)
2018-12-17 21:50:30 [scrapy.utils.log] INFO: Versions: lxml 4.2.4.0, libxml2 2.9.8, cssselect 1.0.3, parsel 1.5.0, w3lib 1.19.0, Twisted 18.7.0, Python 3.6.3 (v3.6.3:2c5fed86e0, Oct 3 2017, 00:32:08) - [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)], pyOpenSSL 18.0.0 (OpenSSL 1.1.0i 14 Aug 2018), cryptography 2.3.1, Platform Darwin-17.7.0-x86_64-i386-64bit
2018-12-17 21:50:30 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'my_1st_project', 'NEWSPIDER_MODULE': 'my_1st_project.spiders', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['my_1st_project.spiders']}
2018-12-17 21:50:30 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats',
'scrapy.extensions.telnet.TelnetConsole',
'scrapy.extensions.memusage.MemoryUsage',
'scrapy.extensions.logstats.LogStats']
2018-12-17 21:50:31 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware',
'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
'scrapy.downloadermiddlewares.retry.RetryMiddleware',
'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
'scrapy.downloadermiddlewares.stats.DownloaderStats']
2018-12-17 21:50:31 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
'scrapy.spidermiddlewares.referer.RefererMiddleware',
'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
'scrapy.spidermiddlewares.depth.DepthMiddleware']
2018-12-17 21:50:31 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2018-12-17 21:50:31 [scrapy.core.engine] INFO: Spider opened
2018-12-17 21:50:31 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2018-12-17 21:50:31 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2018-12-17 21:50:31 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://bj.ganji.com/robots.txt> (referer: None)
2018-12-17 21:50:31 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://bj.ganji.com/wblist/haidian/zufang/> (referer: None)
大牛坊 永丰基地 绿海大厦软件园二期 航天电子 精装温馨 : 3300
MoFang公寓高品质 非中介 可 全国连锁一号线 : 4000
魔方公寓 西二旗 上地 润泽庄园 13号线 设施齐全 : 4800
馨悦家园东区 开间 可配全齐 包物业 : 2700
苏州街地铁 豪装一居 真实价格 不能错过的房子 : 6000
暖冬福利超近距离地铁六号线田村站 距离地铁口50米 精装一居 : 4800
学院路 五道口 六道口 逸成东苑独卫 精装修 八家嘉苑768 : 4800
魏公村民大西门厂洼万寿寺北里一居出租,随时住 : 4800
大牛坊二区精装修一居一枚西北旺马连洼上地西二旗公交直达 : 3700
柳浪家园,精装南向1居,业主直租,家电齐全,可长租,随时看房 : 4600
半壁店61号院 南坞 金源燕莎 四季青 精装大两居年底便宜甩 : 5000
西山国际城精装一居 好房出租 拎包即住 白领的选择 : 4500
中关村 北大东门 紧邻北大附小 中关园小区 精装两居 随时看 : 6800
旱河路 京泉馨苑 新出 精装 两居室 : 6200
远洋邦舍龙旗广场店 近地铁8号线育新站 回龙观 西三旗可短住 : 4500
柳浪家园业主直租真实照片真实价格全天看房业主人好可长租随时住 : 5000
整租丨配有停车场 2千多平私密花园 700多平室内健身娱乐区 : 4800
唐家岭 图景嘉园 小牛坊 软件园 联想 百度 有钥匙随时看房 : 4500
清河电科院 小营东路7号院,豪华三居室,家电齐全,南北通透 : 7500
尚 诚 世华龙樾二里南向一居 采光好 无遮挡小区人车分流 : 5800
清华东门 林业大学 八家嘉苑朝南一居室 紧邻学清嘉创大厦 : 5500
温泉凯胜家园 一室一厅 全南户型 家电齐全 包物业取暖 随时 : 3500
牡丹园东里 牡丹园健德门 地铁10号线 精装一居室 随时入住 : 5500
德顺园两居室 佟家坟 四季青桥西 海淀外国语 航天信息科技园 : 5000
甘家口小区一居出租 北京实验学校 白堆子甘家口大厦海军总医院 : 4900
育新花园正规大三居降价了看房方便集中供暖,采光号随时入住 : 7000
8号线西三旗 北新家园 正规次卧室 精装全齐 集中供暖 : 2250
二里庄 石油大院 志新村大一居,房间宽敞明亮,看房随时 : 5400
知春路 罗庄西里小区 紧挨 碧兴园 有地上车位 : 7600
清华东南门 华清嘉园三居室 高层电梯房 du家房源 有钥匙 : 9800
海淀清河 永泰西里精装两居室 家具家电齐全 可长租可!! : 5500
马连洼 西北旺 永旺家园 永丰 用友 上地 西二旗 随时入住 : 4100
凯盛小区,尚峰尚水 精装修 干净整洁 交通便利 配套齐全 : 4600
精装修 押一付一 地铁16号温阳路 稻香湖路 永丰 柳林村 : 1800
橡树湾二期 4室3厅2卫 : 23500
清河 永泰庄地铁口 南北通透大两居 包物业取暖 可以! : 4800
全村的希望 知春里地铁口10号线 知春路82号院 大一居室 : 5800
可,知春里,双榆树精装一居室,三层南向,两居7000 : 5500
此房直租,没有任何杂费,一居一室,独门独户,独立卫生间。 : 1010
精装修 押一付一 地铁13号8号线环绕 霍营 立水桥 西二旗 : 2680
北大家属院燕东园新出两居一层带小院 近北大附小 随时看房入住 : 7200
西二旗城铁附近正规一居室出租 独门独户 正规小区 : 1000
西北旺韩家川北站公寓房屋出租自带厨卫实墙拎包入住白领享受 : 1300
颐和山庄 精装 4居 一楼 : 5800
定慧桥,家乐福,定慧福里,五路居,南北通透两居,精装齐有钥匙 : 11000
西二旗软件园 万科华府精装修 落地窗 15年新社区 素质人群 : 7500
小西天 文慧园小区精装两居紧邻枫蓝国际 节能大厦有钥匙可宿舍 : 6499
尚诚 君安家园 3居室 随时看房 随时入住 : 11000
魔方公寓 紫竹院 车公庄 西直门 交通便利精装修 可 : 6500
装修好的别墅 家具家电都有 带南花园 楼间距比较大 环境好 : 25000
上地东里上地佳园上地南路上地商圈精装修3居室 : 10500
西四环,人车分流园区,下叠拼4居室,看房随时,空房出租 : 23000
上地东里 南北两居 业主直租 诚意出租 临近地铁 上地商圈 : 6500
近华为阅西山环保嘉苑 16线 温泉人家 环山村翠湖云中心月 : 4000
知春里站 卫星桥 青云北区 大泥湾 附近知春路82号院一居 : 5700
房东直租金隅瑞和园精装三居全南向,全家具电器, : 6800
五道口清华校内 精装两室 南北通透 中间楼层 看房方便有钥匙 : 8500
五路居地铁口 玲珑天地对面 西木小区 2楼 正规两居 : 5500
看房随时 万城华府南北通透三居 精装修保养好,业主委托 : 28500
五福玲珑居 曙光花园 慈寿寺 车道沟 二室一厅 : 7500
五棵松 西翠路 精装大三居 带车位 家具家电齐全 : 25000
魔方公寓 紫竹院白堆子 军事博物馆 精装修 可白领优选 : 6500
定慧北里瑞新里北京印象定慧福里精装2居拎包入住 : 6700
精装修 押一付一 地铁10号线海淀黄庄 巴沟 魏公村 中关村 : 2680
(新出)光大花园4居,可配齐家电家具,也可以空房长租,有钥匙 : 20000
精装四居 低密板楼 有钥匙 世纪城鲁艺上河村 : 23000
软件园 百度 联想 滴滴 文思海辉 唐家岭 航天城精装三居室 : 6500
永泰庄地铁 清河车站 人民医院 清景园精装两居 随时看房入住 : 5700
新出房源,诚意出租,装修好,家具家电全齐,高楼层 : 6100
北外语学院 厂洼小区 行政学院 魏公村小区 万寿寺北里 两居 : 6900
定慧桥,家乐福,定慧福里,五路居,南北通透两居,精装齐有钥匙 : 11000
魔方公寓 紫竹院白堆子 军事博物馆 精装修 可白领优选 : 5900
西北旺韩家川路公寓酒店式单间带厨卫拎包入住接受押一付一安全 : 1300
步行永丰南地铁 直达中关村西苑 软件园 百度科技园 押一付一 : 3200
田村自由度精准大一居 紧邻 乐府江南 雅世合金 定慧福里 : 5500
(新出)万城华府1层带花园平层5居,精装修,家电家具全齐 : 70000
魔方公寓 紫竹院 国图馆 魏公村白石桥地铁站附近 精装可月付 : 6500
魔方公寓 精装独居 地铁1号线可无中介 推荐新人免房租 : 3700
四季青西山 门头馨园北区二居精装入住车位宽裕 翰河园北坞嘉园 : 5600
知春路地铁站旁边,碧兴园东向80平米一居室 可居家办公 : 8500
魔方公寓 紫竹院 国图馆 魏公村白石桥地铁站附近 精装可月付 : 5600
颐和山庄 精装一居 花园洋房 : 2800
五棵松301武警长峰假日酒店旁永定路70号院电梯两居室出租 : 5500
南北双通透 高层 眼镜户型 27000就 不要看报价 : 33000
门头新村北二区 大两居室 小三居室 长租 均可 居家优先 : 5800
魔方公寓紫竹院 潘庄东路 三虎桥 白石桥 精装修 家电齐全 : 5500
四季青五路居西荣阁琨御府五福玲珑居美丽西园金雅园西木小区金庄 : 3800
清华大学 校内附幼附小旁 精装三居 南北通透 可长租3年 : 14000
智慧大厦 依都阁 西直门铁路危改小区 时代之光 精装修一居室 : 5500
中关村 苏州街 办公可注.册 南北大两居 随时看房 : 16000
海淀黄庄稻香园 大河庄苑 海淀南路 中关村 苏州桥微软白领 : 7000
西四环 永定华庭 13年新社区 正规一居室 看房随时 : 5500
五棵松地铁 航天二院武警总院 新上精装二居室 随时看房 : 6000
中关村 黄庄小区 东南小区 科育小区精装三居随时看房有钥匙 : 4000
双榆树中小学陪读,临近地铁 今 日头条 中卫通 青云大厦 : 5000
定慧桥海淀五路居西四环自主好房首租 : 5500
4号线西苑医院家属院精装大两居家电齐全长期出租拎包入住随时看 : 8500
上地佳园 稳定长租 出门地铁13号线 西二旗昌平线 五彩城 : 12000
尚诚 君安家园西南向三居室 : 10000
上地 西二旗 西北旺 永丰基地 软件园区唐家岭航天城3居 : 6600
晨月园 世纪城 远大园 金源燕莎 长春桥 车道沟 甩租 : 2500
北安河地铁站附近独立厨卫大外窗 1室0厅1卫 : 1700
中关村,中关村东南小区,进地铁,出行方便 : 7000
学院路五道口 六道口富润家园 矿业大学 清华同方 东王庄三居 : 8800
双卧室朝南南北三线通透紧邻绿化带高层观景大面宽短进深 : 19000
(新出带车位可长租装修好南北通透)碧水云天餐客厅分离 : 23000
学院路五道口清华大学八家嘉苑 逸成东苑 建清园小区正规一居室 : 4000
为你而选 四季青 车道沟 曙光花园居家两居室 : 8500
地铁十号线 牡丹园 家电齐全 业主直租 一居室 龙翔路 : 5800
兰德华庭 2室2厅 8000元 : 8000
大钱市胡同小区 朝南向一居室 电梯房 近西直门地铁 凯德茂 : 8500
西土城地铁10 13北影 北影 致真大厦 航南大厦 精装一居 : 8500
2018-12-17 21:50:32 [scrapy.core.engine] INFO: Closing spider (finished)
2018-12-17 21:50:32 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 460,
'downloader/request_count': 2,
'downloader/request_method_count/GET': 2,
'downloader/response_bytes': 45178,
'downloader/response_count': 2,
'downloader/response_status_count/200': 2,
'finish_reason': 'finished',
'finish_time': datetime.datetime(2018, 12, 17, 13, 50, 32, 120037),
'log_count/DEBUG': 3,
'log_count/INFO': 7,
'memusage/max': 67117056,
'memusage/startup': 67117056,
'response_received_count': 2,
'scheduler/dequeued': 1,
'scheduler/dequeued/memory': 1,
'scheduler/enqueued': 1,
'scheduler/enqueued/memory': 1,
'start_time': datetime.datetime(2018, 12, 17, 13, 50, 31, 12307)}
2018-12-17 21:50:32 [scrapy.core.engine] INFO: Spider closed (finished)
总结:
![](https://img.haomeiwen.com/i730751/0a572c91c6a8a9ee.png)
scrapy项目爬虫文件说明
![](https://img.haomeiwen.com/i730751/ec0c5df2ad253c92.png)
上述ganji.py介绍
![](https://img.haomeiwen.com/i730751/7c45d6e09bd2f871.png)
网友评论