天行健,君子以自勉;地势坤,君子以无欲则刚!


好了废话十分的少说,正式进入正题,这两天应朋友的号令,爬取了某铝业网址上的多少。刚开端吧,还是挺不乐意的(首固然和煦未有完好的爬取过英特网的数据哎,便是不自信卡塔 尔(阿拉伯语:قطر‎,但是在兄弟伙的目前不能够丢脸卅,硬带头皮都要上,于是乎答应了她,好呢~~~~


 咱俩的爬取目的:

1、总共63页,每页有十几条的链接

图片 1

2、爬取连接里面包车型客车数目(重要有付加物名称、规格、公约、华中市道、华北市情、西北商场、中原商场、付加物报价时间卡塔尔国

图片 2

3、爬取的数额存为CSV格式


 生机勃勃、网页源代码解析:

1、解析网站每页的网站

第风流洒脱页的网站:

其次页的网址:

其三页的网站:

还是挺不愿意的(主要是自己没有完整的爬取过网上的数据哎。梯次类推

作者们能够窥见第63页的网站是:

2、解析每页网页的源代码

还是挺不愿意的(主要是自己没有完整的爬取过网上的数据哎。因此翻看第生龙活虎页的网页的源代码,能够开采,第生龙活虎页上的每日的成品报价的链接。

图片 3

则,全部思路为

还是挺不愿意的(主要是自己没有完整的爬取过网上的数据哎。(1卡塔 尔(阿拉伯语:قطر‎拼接全体页的网站(

(2卡塔尔国解析出每页中的数据链接(<A href=/chalco/ywycp/cpbj/webinfo/2018/08/1533256568236442.htm
target=_blank>中国铝业二〇一八年十月3尼桑品报价</A>卡塔尔国;

(3卡塔 尔(阿拉伯语:قطر‎通过链接正则相称出所要求的多寡。


 二、Python源码

 此番爬取,使用的是request和re包!

图片 4图片 5

 1 __Author__ = "MEET Shen"
 2 import requests
 3 import re
 4 import pandas as pd
 5 
 6 def get_allpage_url(n):
 7     '''
 8     得到所有页的连接
 9     '''
10     totalpage_urls=[]
11     for i in range(n):
12         i=i+1
13         url_change_page="http://www.chalco.com.cn/chalco/ywycp/cpbj/A120401web_{0}.htm".format(str(i))
14         totalpage_urls.append(url_change_page)
15     return totalpage_urls
16 url=get_allpage_url(20)
17 def get_datapage_url(data):
18     '''
19     http://www.chalco.com.cn/chalco/ywycp/cpbj/webinfo/2018/06/1530058323659676.htm
20                             /chalco/ywycp/cpbj/webinfo/2018/06/1530058323659676.htm
21     :return:
22     '''
23     #正则表达式进行解析出所有的数据连接
24     pattern=re.compile('.*?</DIV><DIV class=cpbj-item-xz><A href=(.*?) target=_blank>.*?',re.S)
25     items=re.findall(pattern,data)
26     del items[0]
27     result_url=[]
28     for i in items:
29         joint="http://www.chalco.com.cn{0}".format(i)
30         result_url.append(joint)
31     items_len=len(items)
32     return result_url,items_len
33 
34 
35 headers={"User-Agent":'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36'
36                       ' (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 '
37                       'Core/1.53.4482.400 QQBrowser/9.7.13001.400'}
38 
39 def get_everypage_data(result_url):
40     response = requests.get(url=result_url, headers=headers)
41     data = response.text
42     pattern=re.compile('.*?<P><STRONG>日历时间:</STRONG>(.*?)</P>.*?'
43                        '<TD bgColor=#ffffff>(.*?)</TD>.*?'
44                        '<TD bgColor=#ffffff>(.*?) </TD>.*?'
45                        '<TD bgColor=#ffffff>(.*?)</TD>.*?'
46                        '<TD bgColor=#ffffff>(.*?)</TD>.*?'
47                        '<TD bgColor=#ffffff>(.*?)</TD>.*?'
48                        '<TD bgColor=#ffffff>(.*?)</TD>.*?'
49                        '<TD bgColor=#ffffff>(.*?)</TD>.*?'
50                        '<TD bgColor=#ffffff>(.*?)</TD>.*?'
51                        ,re.S)
52     items=re.findall(pattern,data)
53     items1=list(items[0])
54     items1[7] = items1[7].replace('<p>','')
55     items1[7] = items1[7].replace('</p>','')
56     items1[8] = items1[8].replace('<p>','')
57     items1[8] = items1[8].replace('</p>','')
58     items1[8] = items1[8].replace('&nbsp;</P>', '')
59     items1[5] = items1[5].replace('<FONT size=3 face="Times New Roman">', '')
60     items1[5] = items1[5].replace('</FONT>', '')
61     items1[6] = items1[6].replace('<FONT size=3 face="Times New Roman">', '')
62     items1[6] = items1[6].replace('</FONT>', '')
63     items1[7] = items1[7].replace('<FONT size=3 face="Times New Roman">', '')
64     items1[7] = items1[7].replace('</FONT>', '')
65     items1[8] = items1[8].replace('<FONT size=3 face="Times New Roman">', '')
66     items1[8] = items1[8].replace('</FONT>', '')
67     return items1
68 
69 
70 def get_asignpage_data():
71     items = []
72     for i in range(len(url)):
73         response = requests.get(url=url[i], headers=headers)
74         data = response.text
75         result_url,items_len = get_datapage_url(data)
76         for i in range(items_len):
77             item=get_everypage_data(result_url[i])
78             items.append(item)
79     return items
80 
81 items=get_asignpage_data()
82 
83 #存为CSV格式
84 import pandas as pd
85 data=pd.DataFrame(items,columns={'time','产品名称','规格','合同','中铝企业','华东市场','华南市场','西南市场','中原市场'})
86 print(data)
87 data.to_csv('C:/Users/Administrator/PycharmProjects/untitled/data/lvye1.csv',sep=',')

View Code


三、爬取的末梢结出

鉴于数量不比非常大,爬取的进程还能够够选择的,最终爬取的数据,且形成的CSV文件如下所示:

图片 6

 

 


笔者还地处学习的景况,如有写得缺乏标准或有错误的地点,真心希望各位读者前来研讨!!!!!


 

相关文章