美文网首页数据蛙数据分析每周作业
XIN71—第51周—爬虫(简单数据采集)

XIN71—第51周—爬虫(简单数据采集)

作者: XIN71 | 来源:发表于2018-12-21 22:33 被阅读4次

目录

1、headers简要解释

2、模拟请求数据

3、数据清洗

4、写入数据库

1、headers简要解释

1. Host (主机和端口号)

Host:对应网址URL中的Web名称和端口号,用于指定被请求资源的Internet主机和端口号,通常属于URL的一部分。

2. Connection:keep-alive

Connection:表示客户端与服务连接类型

Client 发起一个包含 Connection:keep-alive 的请求,HTTP/1.1使用 keep-alive 为默认值。

Server收到请求后:

如果 Server 支持 keep-alive,回复一个包含 Connection:keep-alive 的响应,不关闭连接;

如果 Server 不支持 keep-alive,回复一个包含 Connection:close 的响应,关闭连接。

如果client收到包含 Connection:keep-alive 的响应,向同一个连接发送下一个请求,直到一方主动关闭连接。

keep-alive在很多情况下能够重用连接,减少资源消耗,缩短响应时间,比如当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都去请求建立连接。

3. Accept-Encoding(文件编解码格式)

Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到Web响应之后先解码,然后再检查文件格式,许多情形下这可以减少大量的下载时间。

举例:Accept-Encoding:gzip;q=1.0, identity; q=0.5, *;q=0

如果有多个Encoding同时匹配, 按照q值顺序排列,本例中按顺序支持 gzip, identity压缩编码,支持gzip的浏览器会返回经过gzip编码的HTML页面。 如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接受。

4. Content-Type:text/html;charset=UTF-8

告诉客户端,资源文件的类型,还有字符编码,客户端通过utf-8对资源进行解码,然后对资源进行html解析。通常我们会看到有些网站是乱码的,往往就是服务器端没有返回正确的编码。

5. User-Agent (浏览器名称)

6. Accept (传输文件类型)

Accept:指浏览器或其他客户端可以接受的MIME(Multipurpose Internet Mail Extensions(多用途互联网邮件扩展))文件类型,服务器可以根据它判断并返回适当的文件格式。

举例:

Accept: */*:表示什么都可以接收。

Accept:image/gif:表明客户端希望接受GIF图像格式的资源;

Accept:text/html:表明客户端希望接受html文本。

Accept: text/html, application/xhtml+xml;q=0.9, image/*;q=0.8:表示浏览器支持的 MIME 类型分别是 html文本、xhtml和xml文档、所有的图像格式资源。

q是权重系数,范围 0 =< q <= 1,q 值越大,请求越倾向于获得其“;”之前的类型表示的内容。若没有指定q值,则默认为1,按从左到右排序顺序;若被赋值为0,则用于表示浏览器不接受此内容类型。

Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;Application:用于传输应用程序数据或者二进制数据。详细请点击

2、模拟请求数据

import urllib.request

url = 'http://********/Country_IN/Russia_IN/SearchRUS.aspx'

headers={

'Host': '********',

'Connection': 'keep-alive',

#'Content-Length': '399',

'Accept': 'application/json, text/javascript, */*; q=0.01',

'Origin': '********',

'X-Requested-With': 'XMLHttpRequest',

'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',

'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',

'Referer': '********',

#'Accept-Encoding': 'gzip, deflate',

'Accept-Language': 'zh-CN,zh;q=0.9',

'Cookie': '********'

}

formdata = {

        'action': 'GetList',

        'TmpID': '********',

        'Starttime': '2018-06',

        'Endtime': '2018-06',

        'page': '1',

        'rows': '2'    }

data = urllib.parse.urlencode(formdata).encode("utf-8")

request = urllib.request.Request(url, data=data, headers=headers)

response = urllib.request.urlopen(request).read().decode()

print(response)

3、数据清洗

response_dict = eval(response)  #字符串转为字典

constant = response_dict['rows']

for i in range(len(constant)):

    print(constant[i])

    print('-----------------------------\n')

4、写入数据库

import pymssql

server = "********"

user = "********"

password = "********"

conn = pymssql.connect(server, user, password, database="ODS")

cursor = conn.cursor()

cursor.execute("SELECT ******** FROM ******** ")

client_list = []

for i in cursor:

    print(i)

sql = "insert into customs.****(shipping_date) values(\'%s\')" % (constant[i]['CUSTOMS_REGISTRATION_DATE'].replace("'", "''"))

cursor.execute(sql)

conn.commit()

相关文章

网友评论

    本文标题:XIN71—第51周—爬虫(简单数据采集)

    本文链接:https://www.haomeiwen.com/subject/dicbkqtx.html