0
点赞
收藏
分享

微信扫一扫

linux网络爬虫

吓死我了_1799 2022-09-22 阅读 160

1、预期获取的资源的url

2、下载url的html源文件(文本形式)

3、从已下载的html源文件里获取标签或内容(bs4函数(python3))

soup=​​BeautifulSoup​​ #创建对象

body=soup.body  #html基本​​框架​​形式、格式

data_main=body.find() #利用浏览器的审查元素 对应内容(部分)

for i, table_info in enumerate(tables):  #利用enumerate添加序号

gsmc = tds[2].find('a').get_text()  #根据索引找内容

4、给url提交参数

for keyword in KEYWORDS:

#url上提交的参数(类似于asp?id=1&sugtime=1503299916325)

paras = {'jl':args[0],'kw':keyword,'p':args[1]}

5、调用get_content(html)函数获取预期资源

利用for循环遍历下载下来的centent文本信息获取预期资源

拓展:datetime获得start/end time

爬取多个网页或内容  可使用from multiprocessing import Pool

代码部分

没解决(删去列表元素两边的空格)

import requests,re

from requests.exceptions import  ReadTimeout,HTTPError,RequestException

try:

#​​爬虫​​部分

headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0'}

response = requests.get('url',headers=headers,timeout=10)

print('请求成功! 状态码%s'%response.status_code)

html=response.text

html1=re.sub("\n*",'',html)

#newhtml=re.sub("\s*",'',html2)

#匹配书名 作者 出版日期 出版社 简介    result1为list类型,re.S解决爬取多行时的换行问题

result1 = re.findall('

.*?href=\"(.*?)\".*?(.*?).*?(.*?).*?(.*?).*?(.*?).*?(.*?)',html1,re.S)

#result1 = re.search("alt=(.*?)>", html, re.S)#另一种定位书名

for result in result1:

print(result)    #result为tuple类型

#报错部分

except ReadTimeout:

print('Time Out!!! 请检查网络)')

except HTTPError:

print('HTTP Error')

except RequestException:

print('Error!!!请求出错了,不止一种绕过方法')

返回的结果:

举报

相关推荐

0 条评论