Python作业1:Scrapy爬取学堂在线+链家二手房EEthunder

爬取学堂在线的计算机类课程页面内容。

要求将课程名称、老师、所属学校和选课人数信息,保存到一个csv文件中。

链接:

importscrapy

classStudyhallItem(scrapy.Item):

#definethefieldsforyouritemherelike:

#name=scrapy.Field()

name=scrapy.Field()#课程名

teacher=scrapy.Field()#老师

school=scrapy.Field()#学校

peopleNum=scrapy.Field()#选课人数

pass

ITEM_PIPELINES=

fromitemadapterimportItemAdapter

importcsv

classStudyhallPipeline(object):

defopen_spider(self,spider):

try:

"""打开csv文件"""

self.file=open('StudyHallData.csv','w',encoding='utf-8',newline='')

self.csv=csv.writer(self.file)

exceptExceptionase:

print(e)

defprocess_item(self,item,spider):

self.csv.writerow(list(item.values()))

returnitem

defclose_spider(self,spider):

self.file.close()

importjson

frompprintimportpprint

fromstudyHall.itemsimportStudyhallItem

classstudyHallSpider(scrapy.spiders.Spider):

name='studyHall'

allowed_domains=['www.xuetangx.com/']

"""data从浏览器中查看得来"""

data='{"query":"","chief_org":[],"classify":["1"],"selling_type":[],"status":[],"appid":10000}'

"""标头从浏览器中复制"""

headers={

'Host':'www.xuetangx.com',

'authority':'www.xuetangx.com',

'method':'POST',

'path':'/api/v1/lms/get_product_list/page=1',

'accept':'application/json,text/plain,*/*',

'accept-encoding':'gzip,deflate,br',

'accept-language':'zh',

'content-type':'application/json',

'cookie':'_ga=GA1.2.192047866.1605620269;provider=xuetang;django_language=zh',

'django-language':'zh',

'sec-fetch-dest':'empty',

'sec-fetch-mode':'cors',

'sec-fetch-site':'same-origin',

'user-agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/86.0.4240.198Safari/537.36Edg/86.0.622.69',

'x-client':'web',

'xtbz':'xt'

}

defstart_requests(self):

"""使用start_requests创建post请求"""

forpageinrange(1,6):

"""爬取5页信息"""

yieldscrapy.FormRequest(

url=self.url_pat.format(page),

headers=self.headers,

method='POST',

body=self.data,

callback=self.parse

)

defparse(self,response):

msg=json.loads(response.body)

foreachinmsg['data']['product_list']:

item=StudyhallItem()

item['name']=each['name']

item['school']=each['org']['name']

item['peopleNum']=each['count']

teacherList=[]

#因为有些课程有多个老师,需要逐一保存,写入一条记录

forteacherineach['teacher']:

teacherList.append(teacher['name'])

item['teacher']=','.join(teacherList)

yielditem

截取一部分爬取的数据如下:

要求爬取北京市东城、西城、海淀和朝阳四个城区的数据(每个区爬取5页),将楼盘名称、总价、平米数、单价保存到json文件中。

classHomelinkItem(scrapy.Item):

location=scrapy.Field()#城区

name=scrapy.Field()#名称

area=scrapy.Field()#面积

TTprice=scrapy.Field()#总价

UnitPrice=scrapy.Field()#单价

BOT_NAME='homeLink'

SPIDER_MODULES=['homeLink.spiders']

NEWSPIDER_MODULE='homeLink.spiders'

ITEM_PIPELINES={'homeLink.pipelines.HomelinkPipeline':300,}

#Crawlresponsiblybyidentifyingyourself(andyourwebsite)ontheuser-agent

#Obeyrobots.txtrules

ROBOTSTXT_OBEY=False

"""对付反爬虫"""

importrandom

#useragent列表

USER_AGENT_LIST=[

'MSIE(MSIE6.0;X11;Linux;i686)Opera7.23',

'Opera/9.20(Macintosh;IntelMacOSX;U;en)',

'Opera/9.0(Macintosh;PPCMacOSX;U;en)',

'iTunes/9.0.3(Macintosh;U;IntelMacOSX10_6_2;en-ca)',

'Mozilla/4.76[en_jp](X11;U;SunOS5.8sun4u)',

'iTunes/4.2(Macintosh;U;PPCMacOSX10.2)',

'Mozilla/5.0(Macintosh;IntelMacOSX10.6;rv:5.0)Gecko/20100101Firefox/5.0',

'Mozilla/5.0(Macintosh;IntelMacOSX10.6;rv:9.0)Gecko/20100101Firefox/9.0',

'Mozilla/5.0(Macintosh;IntelMacOSX10.8;rv:16.0)Gecko/20120813Firefox/16.0',

'Mozilla/4.77[en](X11;I;IRIX;646.5IP30)',

'Mozilla/4.8[en](X11;U;SunOS;5.7sun4u)'

]

#随机生成useragent

USER_AGENT=random.choice(USER_AGENT_LIST)

fromhomeLink.itemsimportHomelinkItem

classMySpider(scrapy.Spider):

name='homeLink'

allowed_domains=['bj.lianjia.com']

start_urls=[]

locations=['dongcheng','xicheng','haidian','chaoyang']#四个城区

forlocinlocations:

"""东城前五页"""

start_urls.append(url)

item=HomelinkItem()

foreachinresponse.xpath("//div[@id='content']/div[1]/ul/*"):

"""爬取该路径下的房区信息"""

"""楼盘地理位置"""

if(response.url.split('/')[-3]=='dongcheng'):

item['location']='东城'

elif(response.url.split('/')[-3]=='xicheng'):

item['location']='西城'

elif(response.url.split('/')[-3]=='haidian'):

item['location']='海淀'

elif(response.url.split('/')[-3]=='chaoyang'):

item['location']='朝阳'

"""获取楼盘名称"""

item['name']=each.xpath("./div[1]/div[@class='title']/a/text()").extract()

"""获取楼盘面积/平米"""

item['area']=each.xpath("./div[1]/div[@class='address']/div/text()").extract()[0].split('|')[1]

"""获取楼盘总价,以万为单位结尾"""

item['TTprice']=str(each.xpath("./div[1]/div[@class='priceInfo']/div[1]/span/text()").extract()[0])+'万'

"""获取楼盘单价"""

item['UnitPrice']=each.xpath("./div[1]/div[@class='priceInfo']/div[2]/span/text()").extract()

if(item['name']anditem['area']anditem['TTprice']anditem['UnitPrice']):

THE END
1.上海二手房上海房产网上海租房上海链家网是提供上海二手房买卖、上海新房、上海租房、上海房价查询等业务的专业房产网站,可为您买卖上海二手房提供帮助,链家网上海站同时具有上海二手房、上海租房及购房问答和百科等频道,还可以在线查询上海二手房价格.买房卖房上上海链家网,让房产交易不再难.https://sh.lianjia.com/
2.中海·印龙泉效果图 均价8500 元/平 白云区 -金科金茂·九华粼云 住宅 建面120-185㎡ 效果图 均价7200 元/平 白云区 -永实·御湖尚城 住宅 建面76-167㎡ 效果图 均价11000 元/平 白云区 -南湖里 住宅 建面107-164㎡ 效果图 均价7700 元/平 白云区 -高科玫瑰园 住宅 建面127-197㎡ 效果图 均价11000 元https://sh.fang.ke.com/loupan/p_zhylqbmwjc
3.链家北京链家房地产经纪有限公司 | 地址:北京市海淀区西二旗西路2号院35号楼01层102-1 | 电话:10106188 | 京ICP备11024601号-18 | ? Copyright 2020 ke.com版权所有 | 违法和不良信息举报电话:010-86440676 | 违法和不良信息举报邮箱:jubaoyouxiang@ke.com http://homelink.com.cn/
4.链家在线链家在线_homelink于2018-02-14 21:51:44发布收录在好站大全目录生活服务/房产/租房买房类别中,距今已持续展示 7 年 81 个月 2480 天 3571923 分钟,浏览已经达到1815次,截至目前该网站共收到 1 个网友评分,综合平均为 0 分,好站星评为 0 星级。本文简单介绍《链家在线》的基础数据分析其质量属性价值、可信http://www.hao12306.com/home/1372.html
5.链家在线您当前位置:123网址之家?网站百科?生活服务?房产家居? 链家在线 链家在线简介 链家在线是一个房产家居类网站。链家在线网通过安全管家检测安全状态未知或危险,浏览需谨慎。 链家,专业的二手房网站和租房网站,为您提供100%真实的二手房信息和租房信息,让您足不出户就能知道二手房和出租房的价格。是买房租房http://hao123.ezkt.cn/siteinfo/49631
6.链家在线网址查询链家在线网链家在线网址查询房产链家在线:链家地产旗下房产网络营销网站,依托链家地产近千家门店和上万名房产经纪人提供大量真实的房源信息;首家将三维城市地图运用于房产交易当中二手房交易网站,通过三维地图的直观和真实再现,可以为用户全景展现房产周边的各项配套,让消费者在购房之初就可以全面掌控房产周边的各项资源。 https://hao.cngold.org/c529987.html
7.链家在线二手房的微博链家在线二手房 2012-9-26 13:51 来自专业版微博 链家在线四大找房途径(四):通过经纪人找房, 在网站首页点击“经纪人”进入“经纪人”频道,按照区域、商圈查找经纪人,或者按照从业年限和经纪人类型选择您中意的经纪人,电话联系确认房源信息。如图!地址:O网页链接 标签: 房产网 二手房 https://weibo.com/u/2105435145
8.链家在线看房,实景带看真房源房天下直播,足不出户就看房!https://live.fang.com/tuwenlive_cd_13_276027_wap.html
9.链家网的前身为链家在线,成立于2010年链家网的前身为链家在线,成立于2010年并于2014年正式更名为链家网。现在已经覆盖全国各地区。光附近就有三家。每天都有好多人来联系房源,员工也有不少,经常有来来开会的,一大帮人,全骑着电动车,好想都是附近店的员工。https://m.dianping.com/review/651365334
10.看了这个才知道,原来你根本不会用链家网的在线聊天怎样才算是正确的在线聊天姿势呢? 开场白 好的自我介绍,可以加深客户对你的印象。 例如:您好,链家王小明,很高兴您服务,请问有什么可以帮您的? 介绍房源 介绍房源,告诉客户这套房源的所有卖点。 1、介绍房屋的基本信息:户型,面积,朝向,楼层,装修。 如:这套房子是套二户型、79㎡、朝南,楼层在7楼,精装修,赠送http://www.360doc.com/content/16/0325/21/30665260_545243579.shtml
11.链家我家在线是一个有范儿的、有视角的、个性化商业资讯与交流平台,核心关注对象是包括公众公司与创业型企业在内的一系列优秀公司http://www.wjgov.com/k/%C1%B4%BC%D2/
12.链家LianJia品牌介绍链家网链家地产二手房网链家租房链家成立于2001年,是以数据驱动的全价值链房产服务平台,提供二手房、新房、租房、旅居房产、海外房产等房产交易服务,并拥有业内独有的房屋数据、人群数据、交易数据,以数据技术驱动服务品质及行业效率的提升。经过多年的发展,链家目前已进驻北京、上海、广州、深圳、天津、成都、青岛、重庆、大连等28个城市和地区,全国https://www.maigoo.com/brand/26682.html
13.链家网(全产业链房产服务平台)链家网是集房源信息搜索、产品研发、大数据处理、服务标准建立为一体的国内重度垂直的全产业链房产服务平台。 [1] 链家网的前身为链家在线,成立于2010年并于2014年正式更名为链家网。 所属分类:中国商务服务网/知识产权服务 成立日期2018年09月17日 法定代表人吴文兵 https://shenzhen.11467.com/info/14808916.htm