当前位置:首页 » 编程语言 » python爬取网站文章

python爬取网站文章

发布时间: 2022-07-14 08:07:57

python3 怎么爬取新闻网站

需求:

从门户网站爬取新闻,将新闻标题,作者,时间,内容保存到本地txt中。

用到的python模块:

importre#正则表达式
importbs4#BeautifulSoup4解析模块
importurllib2#网络访问模块
importNews#自己定义的新闻结构
importcodecs#解决编码问题的关键,使用codecs.open打开文件
importsys#1解决不同页面编码问题

其中bs4需要自己装一下,安装方法可以参考:Windows命令行下pip安装python whl包

程序:

#coding=utf-8
importre#正则表达式
importbs4#BeautifulSoup4解析模块
importurllib2#网络访问模块
importNews#自己定义的新闻结构
importcodecs#解决编码问题的关键,使用codecs.open打开文件
importsys#1解决不同页面编码问题

reload(sys)#2
sys.setdefaultencoding('utf-8')#3

#从首页获取所有链接
defGetAllUrl(home):
html=urllib2.urlopen(home).read().decode('utf8')
soup=bs4.BeautifulSoup(html,'html.parser')
pattern='http://w+.jia..com/article/w+'
links=soup.find_all('a',href=re.compile(pattern))
forlinkinlinks:
url_set.add(link['href'])

defGetNews(url):
globalNewsCount,MaxNewsCount#全局记录新闻数量
whilelen(url_set)!=0:
try:
#获取链接
url=url_set.pop()
url_old.add(url)

#获取代码
html=urllib2.urlopen(url).read().decode('utf8')

#解析
soup=bs4.BeautifulSoup(html,'html.parser')
pattern='http://w+.jia..com/article/w+'#链接匹配规则
links=soup.find_all('a',href=re.compile(pattern))

#获取URL
forlinkinlinks:
iflink['href']notinurl_old:
url_set.add(link['href'])

#获取信息
article=News.News()
article.url=url#URL信息
page=soup.find('div',{'id':'page'})
article.title=page.find('h1').get_text()#标题信息
info=page.find('div',{'class':'article-info'})
article.author=info.find('a',{'class':'name'}).get_text()#作者信息
article.date=info.find('span',{'class':'time'}).get_text()#日期信息
article.about=page.find('blockquote').get_text()
pnode=page.find('div',{'class':'article-detail'}).find_all('p')
article.content=''
fornodeinpnode:#获取文章段落
article.content+=node.get_text()+' '#追加段落信息

SaveNews(article)

printNewsCount
break
exceptExceptionase:
print(e)
continue
else:
print(article.title)
NewsCount+=1
finally:
#判断数据是否收集完成
ifNewsCount==MaxNewsCount:
break

defSaveNews(Object):
file.write("【"+Object.title+"】"+" ")
file.write(Object.author+" "+Object.date+" ")
file.write(Object.content+" "+" ")

url_set=set()#url集合
url_old=set()#爬过的url集合

NewsCount=0
MaxNewsCount=3

home='http://jia..com/'#起始位置

GetAllUrl(home)

file=codecs.open("D:\test.txt","a+")#文件操作

forurlinurl_set:
GetNews(url)
#判断数据是否收集完成
ifNewsCount==MaxNewsCount:
break

file.close()

新闻文章结构

#coding:utf-8
#文章类定义
classNews(object):
def__init__(self):
self.url=None
self.title=None
self.author=None
self.date=None
self.about=None
self.content=None

对爬取的文章数量就行统计。

Ⅱ 如何用python爬取一个网站的评论数据

假如一个商品全部评论数据为20w+ 默认好评15w+ 这15w+的默认好评就会不显示出来。那么我们可以爬取的数据就只剩下5w+ 接下来 我们就分别爬取全部好评 好评 中评 差评 追加评价 但是就算这些数据加起来 也仍然不足5w+ 上文的博主猜测可能有两点原因:

1.出现了数据造假,这个数字可能是刷出来的
2.真的有这么多的评论,但这时候系统可能只显示其中比较新的评论,而对比较旧的评论进行了存档。
在博主理论的基础上我也进行了很多相应的测试,就是说无论如何 我们最终都爬不到剩下的5w条数据 只能爬取一部分但这一部分数据也将近上千多条 如果有小伙伴能爬取下更多欢迎补充。

整体思路

全部评价 好评 中评 差评 追加评价的网址都是涉及到一定的参数的 只要修改网页的数据 在遍历页码 即可完成全部的爬取。

Ⅲ 如何用python写爬虫来获取网页中所有的文章以及关键词

所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。
类似于使用程序模拟IE浏览器的功能,把URL作为HTTP请求的内容发送到服务器端, 然后读取服务器端的响应资源。

在Python中,我们使用urllib2这个组件来抓取网页。
urllib2是Python的一个获取URLs(Uniform Resource Locators)的组件。

它以urlopen函数的形式提供了一个非常简单的接口。

最简单的urllib2的应用代码只需要四行。

我们新建一个文件urllib2_test01.py来感受一下urllib2的作用:

import urllib2
response = urllib2.urlopen('http://www..com/')
html = response.read()
print html

按下F5可以看到运行的结果:

我们可以打开网络主页,右击,选择查看源代码(火狐OR谷歌浏览器均可),会发现也是完全一样的内容。

也就是说,上面这四行代码将我们访问网络时浏览器收到的代码们全部打印了出来。

这就是一个最简单的urllib2的例子。

除了"http:",URL同样可以使用"ftp:","file:"等等来替代。

HTTP是基于请求和应答机制的:

客户端提出请求,服务端提供应答。

urllib2用一个Request对象来映射你提出的HTTP请求。

在它最简单的使用形式中你将用你要请求的地址创建一个Request对象,

通过调用urlopen并传入Request对象,将返回一个相关请求response对象,

这个应答对象如同一个文件对象,所以你可以在Response中调用.read()。

我们新建一个文件urllib2_test02.py来感受一下:

import urllib2
req = urllib2.Request('http://www..com')
response = urllib2.urlopen(req)
the_page = response.read()
print the_page

可以看到输出的内容和test01是一样的。

urllib2使用相同的接口处理所有的URL头。例如你可以像下面那样创建一个ftp请求。

req = urllib2.Request('ftp://example.com/')

在HTTP请求时,允许你做额外的两件事。

1.发送data表单数据

这个内容相信做过Web端的都不会陌生,

有时候你希望发送一些数据到URL(通常URL与CGI[通用网关接口]脚本,或其他WEB应用程序挂接)。

在HTTP中,这个经常使用熟知的POST请求发送。

这个通常在你提交一个HTML表单时由你的浏览器来做。

并不是所有的POSTs都来源于表单,你能够使用POST提交任意的数据到你自己的程序。

一般的HTML表单,data需要编码成标准形式。然后做为data参数传到Request对象。

编码工作使用urllib的函数而非urllib2。

我们新建一个文件urllib2_test03.py来感受一下:

import urllib
import urllib2
url = 'http://www.someserver.com/register.cgi'
values = {'name' : 'WHY',
'location' : 'SDU',
'language' : 'Python' }
data = urllib.urlencode(values) # 编码工作
req = urllib2.Request(url, data) # 发送请求同时传data表单
response = urllib2.urlopen(req) #接受反馈的信息
the_page = response.read() #读取反馈的内容

如果没有传送data参数,urllib2使用GET方式的请求。

GET和POST请求的不同之处是POST请求通常有"副作用",

它们会由于某种途径改变系统状态(例如提交成堆垃圾到你的门口)。

Data同样可以通过在Get请求的URL本身上面编码来传送。

import urllib2
import urllib
data = {}
data['name'] = 'WHY'
data['location'] = 'SDU'
data['language'] = 'Python'
url_values = urllib.urlencode(data)
print url_values
name=Somebody+Here&language=Python&location=Northampton
url = 'http://www.example.com/example.cgi'
full_url = url + '?' + url_values
data = urllib2.open(full_url)

这样就实现了Data数据的Get传送。

2.设置Headers到http请求

有一些站点不喜欢被程序(非人为访问)访问,或者发送不同版本的内容到不同的浏览器。

默认的urllib2把自己作为“Python-urllib/x.y”(x和y是Python主版本和次版本号,例如Python-urllib/2.7),

这个身份可能会让站点迷惑,或者干脆不工作。

浏览器确认自己身份是通过User-Agent头,当你创建了一个请求对象,你可以给他一个包含头数据的字典。

下面的例子发送跟上面一样的内容,但把自身模拟成Internet Explorer。

(多谢大家的提醒,现在这个Demo已经不可用了,不过原理还是那样的)。

import urllib
import urllib2
url = 'http://www.someserver.com/cgi-bin/register.cgi'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'name' : 'WHY',
'location' : 'SDU',
'language' : 'Python' }
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()

以上就是python利用urllib2通过指定的URL抓取网页内容的全部内容,非常简单吧,希望对大家能有所帮助。

Ⅳ python怎么抓取网页中DIV的文字

使用 BeautifulSoup 进行解析 html,需要安装 BeautifulSoup

#coding=utf-8

importurllib2
importsocket
importhttplib
frombs4importBeautifulSoup

UserAgent='Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/57.0.2987.98Safari/537.36'

defdownloadPage(url):

try:

opener=urllib2.build_opener()

headers={'User-Agent':UserAgent}

req=urllib2.Request(url=url,headers=headers)

resp=opener.open(req,timeout=30)
result=resp.read()

returnresult

excepturllib2.HTTPError,ex:
printex
return''
excepturllib2.URLError,ex:
printex
return''
exceptsocket.error,ex:
printex
return''
excepthttplib.BadStatusLine,ex:
printex
return''


if__name__=='__main__':

content=downloadPage("这填douban的地址")

#printcontent

soap=BeautifulSoup(content,'lxml')

lst=soap.select('ol.grid_viewli')

foriteminlst:
#电影详情页链接
printitem.select('div.item>div.pica')[0].attrs['href']

#图片链接
printitem.select('div.item>div.picaimg')[0].attrs['src']

#标题
printitem.select('div.item>div.info>div.hd>a>span.title')[0].get_text()

#评分
printitem.select('div.item>div.info>div.bd>div.star>span.rating_num')[0].get_text()
print'-------------------------------------------------------------------------'

Ⅳ python 怎样爬去网页的内容

用python爬取网页信息的话,需要学习几个模块,urllib,urllib2,urllib3,requests,httplib等等模块,还要学习re模块(也就是正则表达式)。根据不同的场景使用不同的模块来高效快速的解决问题。

最开始我建议你还是从最简单的urllib模块学起,比如爬新浪首页(声明:本代码只做学术研究,绝无攻击用意):

这样就把新浪首页的源代码爬取到了,这是整个网页信息,如果你要提取你觉得有用的信息得学会使用字符串方法或者正则表达式了。

平时多看看网上的文章和教程,很快就能学会的。

补充一点:以上使用的环境是python2,在python3中,已经把urllib,urllib2,urllib3整合为一个包,而不再有这几个单词为名字的模块

Ⅵ 怎么用Python从多个网址中爬取内容

调用 requests 包 , BeautifulSoup4包, 能实现,网页内容写入 excel 不太好看,建议写入 txt 或者 xml。确定要写入 Excel 可以调用 pandas包或者 openpyxl包

Ⅶ 如何用Python爬虫抓取网页内容

首先,你要安装requests和BeautifulSoup4,然后执行如下代码.

importrequests
frombs4importBeautifulSoup

iurl='http://news.sina.com.cn/c/nd/2017-08-03/doc-ifyitapp0128744.shtml'

res=requests.get(iurl)

res.encoding='utf-8'

#print(len(res.text))

soup=BeautifulSoup(res.text,'html.parser')

#标题
H1=soup.select('#artibodyTitle')[0].text

#来源
time_source=soup.select('.time-source')[0].text


#来源
origin=soup.select('#artibodyp')[0].text.strip()

#原标题
oriTitle=soup.select('#artibodyp')[1].text.strip()

#内容
raw_content=soup.select('#artibodyp')[2:19]
content=[]
forparagraphinraw_content:
content.append(paragraph.text.strip())
'@'.join(content)
#责任编辑
ae=soup.select('.article-editor')[0].text

这样就可以了

Ⅷ 如何用Python requests 爬取网页所有文字

您可以用requests库的get方法,以请求的网址为参数,获取网页所有html代码,再访问结果是text属性即可。

Ⅸ 如何利用python爬取网页内容

利用python爬取网页内容需要用scrapy(爬虫框架),但是很简单,就三步

  1. 定义item类

  2. 开发spider类

  3. 开发pipeline

想学习更深的爬虫,可以用《疯狂python讲义》

Ⅹ python怎么爬取网站数据

很简单,三步,用爬虫框架scrapy
1. 定义item类
2. 开发spider类
3. 开发pipeline
如果有不会的,可以看一看《疯狂python讲义》

热点内容
巡图脚本 发布:2025-02-02 08:47:41 浏览:830
苹果换安卓怎么换王者荣耀 发布:2025-02-02 08:47:33 浏览:664
文件夹复制并重命名 发布:2025-02-02 08:41:39 浏览:269
安东尼我的世界服务器 发布:2025-02-02 08:40:09 浏览:759
iphone6如何删除缓存 发布:2025-02-02 08:33:06 浏览:830
为什么路由器的密码是五位数 发布:2025-02-02 08:32:30 浏览:721
怎样编程选股 发布:2025-02-02 08:22:02 浏览:419
电脑web应用服务器 发布:2025-02-02 08:05:31 浏览:811
电脑存储内存多少合适 发布:2025-02-02 08:00:15 浏览:110
登录界面android 发布:2025-02-02 07:53:23 浏览:844