python爬虫之爬取时光网电影影评
最近看了美國往事這部電影。于是就想到最近剛學的爬蟲,就像試試把時光網影評爬取下來,并按照影評的名字存放在本地文件夾。
在長影評頁面可以看到每篇文章的標題對應都有一個blogid,并且這個id對應該影評正文頁的后綴
那么我們便可以通過這個id來實現獲取當前頁所有影評的地址
首先定義一個方法
id = []#存儲電影id
text = []#存儲文本
name = ''#存儲文章名字
?def getUrl(url):
response = requests.get(ur)
html = response.text
soup = BeautifulSoup(html, 'html.parser')
main = soup.find_all(class_ = 'db_comtool')#找到所有標簽為db_comtool的div里面內容
for i in main:
id.append(i.get('blogid'))#將所有blogid的內容添加到id這個列表中
這個時候我們就得到了當前頁所有的id
然后打開任意一篇文章查看源代碼分析可以得出正文文本所在的<p>標簽在一個class為db_mediacont db_commentcont的div里面文章的標題在一個class為px38 mt30 c_000的<h2>標簽中
?def getArticle(url):
global text
response = requests.get(url)#訪問網站
html = response.text#保存網站源代碼
bf = BeautifulSoup(html,'html.parser')#解析網址
a1 = bf.find_all(class_='db_mediacont db_commentcont')#獲取正文文本
a2 = bf.find_all(class_='px38 mt30 c_000')#獲取文章標題
for each in a1:
text.append(re.sub('[\t\n]', "", re.sub(r'<[^>]+>', "", str(each))))#利用正則表達式過濾掉無用內容
for each in a2:
name = (re.sub('[\t\n]', "", re.sub(r'<[^>]+>', "", str(each))))
f = open('時光網影評/%s.txt'%name, 'w') # 首先先創建一個文件對象,打開方式為w,名字為剛才得到的name
for each in text:
f.writelines(each.encode("gbk", 'ignore').decode("gbk", "ignore")) # 用readlines()方法寫入文件
text = []#清空text
然后將網址放入函數中打開
?for i in range(1,15):
ur = 'http://movie.mtime.com/11319/comment-{}.html'.format(i)#自動翻頁
getUrl(ur)
for i in id:
url = 'http://movie.mtime.com/11319/reviews/{}.html'.format(i)#自動訪問每篇影評的對應地址
getTitle(url)
最后可以看到已經成功的將影評保存在本地了。
總結
以上是生活随笔為你收集整理的python爬虫之爬取时光网电影影评的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: taobao.logistics.con
- 下一篇: 内存管理:内存空间的扩充
