hyspider之城市爬取

2021-09-08 06:42:04 字數 2515 閱讀 2452

影院資訊在各渠道都是按城市分類,通過城市id分頁查詢,因此在抓取影院前先抓取城市資訊,城市資訊基本不變,只需抓取一次即可。

貓眼沒有從貓眼找到直接獲取城市列表的api, 所以基於selenium模擬chrome訪問貓眼首頁,獲取首頁html原始碼,然後從html中提取所有城市。

city_mt原始碼:

#儲存貓眼城市資訊

create table `city_lm` (

`id` int(11) unsigned not null,

`g` char(1) not null default '',

`name` varchar(10) not null default '',

`create_time` timestamp not null default current_timestamp,

`update_time` timestamp not null default current_timestamp on update current_timestamp,

primary key (`id`)

) engine=innodb default charset=utf8;

淘票票

同貓眼一樣,淘票票也是基於selenium獲取首頁html原始碼解析出城市資訊。

city_tb原始碼:

#儲存**城市資訊

create table `city_tb` (

`id` int(11) unsigned not null,

`g` char(1) not null default '' commnet '城市分組',

`name` varchar(10) not null default '',

`create_time` timestamp not null default current_timestamp,

`update_time` timestamp not null default current_timestamp on update current_timestamp,

primary key (`id`)

) engine=innodb default charset=utf8;

糯公尺

糯公尺則比較簡單,直接有獲取城市列表的api,但是使用scrapy抓取時需要變換useragent,糯公尺會遮蔽掉基於scrapy agent的抓取。

city_lm原始碼:

#糯公尺影院城市api

#儲存糯公尺城市資訊

create table `city_lm` (

`id` int(11) unsigned not null,

`g` char(1) not null default '' commnet '城市分組',

`name` varchar(10) not null default '',

`create_time` timestamp not null default current_timestamp,

`update_time` timestamp not null default current_timestamp on update current_timestamp,

primary key (`id`)

) engine=innodb default charset=utf8;

城市匹配

城市匹配比較簡單,直接基於name匹配即可。

#儲存匹配後的城市資訊

create table `city` (

`id_mt` int(11) not null,

`id_tb` int(11) not null,

`id_lm` int(11) not null,

`g` char(255) not null,

`name` varchar(10) character set utf8 not null,

`fly` bit(1) not null default b'0',

`create_time` timestamp not null default current_timestamp,

`update_time` timestamp not null default current_timestamp on update current_timestamp,

primary key (`id_mt`)

) engine=innodb default charset=utf8;

#以city_mt為標準,基於name欄位join

replace city(id_mt, id_tb, id_lm, g, name)

select city_mt.id, city_tb.id, city_lm.id, city_mt.g, city_mt.name from city_mt join city_tb on city_mt.name=city_tb.name

join city_lm on city_mt.name=city_lm.name;

xpath案例 全國城市名爬取

usr bin python import requests from lxml import etree 專案需求 解析出所有的城市名稱 if name main headers url page text requests.get url url,headers headers text tre...

單元測試之城市和國家

編寫乙個函式,它接受兩個引數 乙個城市名和乙個國家名,這個函式返回乙個格式為city,country的字串,如santiago,chile,將這個函式儲存在乙個名為city functions.py的模組中。建立乙個名為test cities.py的函式.def get city country c...

Python爬取中國天氣網指定城市天氣

功能 完整 import pandas as pd import requests import re 建立乙個字典儲存中國天氣網城市 def createcitycode fh r text 中國天氣網城市 csv data pd.read csv fh,engine python data da...