1.爬取网站的流程:
1、确定网站哪个url是数据的来源。
2.简要分析一下网站结构,查看数据一般放在哪里。
3.查看是否有分页,解决分页的问题。
4.发送请求,查看response.text里面是否有我们想要的数据内容。
5.如果有数据,就用相应的提取数据的方法提取数据保存。
6.如果没有,我们就可以通过以下两种方法来实现爬取:
(1)分析数据来源,查看是否通过一些接口获取到的页面数据。(首推)
如果没有在页面中返回数据,我们应该首先想到,数据有可能是从ajax接口中获取的。
分析接口的步骤:
1.查看该接口返回的数据是否使我们想要的。
2.重点查看该接口的请求参数。
了解哪些请求参数是变化的以及他的变化规律。
(2)selenium+phantomjs来获取页面内容。
2.分页的两种方法:
(1)for循环。
for i in range(1,20):
response = requests.get(url %i)
这种方法只能用你知道最大页的前提下。
(2)while True循环
i =0 #初始页码
while True:
# print(2)
json_str = get_conent(url.format(type_,i) ,headers =headers )
print(json_str)
#必须要制定跳出循环的边界。
if json_str =='[]':
# print(1)
break
json_data = json.loads(json_str)
parse_json(json_data)
i+=20
3.该多线程,最重要的是将什么放到队列中。
在这项目中,我们决定将电影的type放到队列中,那么你就要单独提供一个方法,可以获取电影type值。
就是项目中def get_types方法.
这个方法为什么要返回一个[(type,typename)]这样的结构?
原因是,我们获取type 的过程中,还需要获取typename,为了构造refer。
所以每个线程就从队列里面拿出一个type就可以解析内容了。
============================================================