注册 登录
编程论坛 Python论坛

求助大神关于python爬虫的问题

LllSong 发布于 2019-12-26 22:50, 2628 次点击
刚学python,不太会爬虫,现在想要爬取古诗文网的古诗的标题和正文,希望大佬帮忙看一下,跪谢
程序代码:
import requests
import re
from bs4 import BeautifulSoup
rex1=(r'\(.*?\)')
for i in range(1):
    url='http://www.'+str(i+1)
    web_data = requests.get(url)
    soup=BeautifulSoup(web_data.text,'lxml')
    context=soup.select('div[class="main3"]')[0].select('div[class="typeleft"]')[0].select('div[class="sons"]')
    title=context[0].select('strong')[0].text
    print(title)

这个是想要爬取标题的,但是只能抓到乱码,如图
只有本站会员才能查看附件,请 登录

然后网站是这样的
只有本站会员才能查看附件,请 登录

如果我想爬取这个正文的画应该怎么写代码呢?
只有本站会员才能查看附件,请 登录

跪谢!!!!

[此贴子已经被作者于2019-12-26 22:58编辑过]

7 回复
#2
wp2319572019-12-27 08:51
回复 楼主 LllSong
程序代码:

from lxml import etree
import requests
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.48'}
res=requests.get("http://www.",headers=headers)
res.encoding=("utf-8")
s = etree.HTML(res.text)
title = s.xpath('//div[@class="sons"]/p/text()')
print(title[1])

#3
wp2319572019-12-27 08:51
回复 楼主 LllSong
e:\pytest>python ex23.py
关关雎鸠,在河之洲。窈窕淑女,君子好逑。
参差荇菜,左右流之。窈窕淑女,寤寐求之。
求之不得,寤寐思服。悠哉悠哉,辗转反侧。
参差荇菜,左右采之。窈窕淑女,琴瑟友之。
参差荇菜,左右芼之。窈窕淑女,钟鼓乐之
#4
wp2319572019-12-27 09:04
回复 楼主 LllSong
bs4:
程序代码:

import requests
from bs4 import BeautifulSoup

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.48'}
res=requests.get("http://www.",headers=headers)
res.encoding=("utf-8")
html = res.text
soup = BeautifulSoup(html, 'html.parser')
tags = soup.find('div',class_="sons")
print(tags.find_all('p')[2].text)      

 

e:\pytest>python ex23.py
关关雎鸠,在河之洲。窈窕淑女,君子好逑。
参差荇菜,左右流之。窈窕淑女,寤寐求之。
求之不得,寤寐思服。悠哉悠哉,辗转反侧。
参差荇菜,左右采之。窈窕淑女,琴瑟友之。
参差荇菜,左右芼之。窈窕淑女,钟鼓乐之...

#5
LllSong2019-12-27 14:12
回复 4楼 wp231957
谢谢大佬,我又有了新的问题
我现在的代码是这样的
import requests
import re
from bs4 import BeautifulSoup as bs
rex1=(r'\(.*?\)')
for i in range(3):
    url='http://www.'+str(i+1)
    web_data=requests.get(url)
    html=str(web_data.content,'utf-8')
    soup=bs(html,'lxml')
    contents=soup.select('div[class="main3"]')[0]
    contents=contents.select('div[class="main3"]')[0]
    contents=contents.select('div[class="typeleft"]')[0]
    contents=list(contents.select('div[class="sons"]'))
    for c in contents:
        title=c.select('p')[0].text
        title=title.strip().replace('\n','')
        text=c.select('p')[2].text
        text=text.strip().replace('\n','')
        text=text.replace('...','')
        print(title)
        print(text)
我想要去掉多余的空格和换行
但是得到的结果是这样的
只有本站会员才能查看附件,请 登录

而原来的是这样的
只有本站会员才能查看附件,请 登录

请问这个应该怎么解决呢?
#6
fall_bernana2019-12-27 14:46
回复 6楼 LllSong
取的都是最后一行.
text=text.strip().replace('\r\n','')
试试
#7
wp2319572019-12-27 15:28
回复 5楼 LllSong
bs4版本:

程序代码:

import requests
from bs4 import BeautifulSoup

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.48'}
res=requests.get("http://www.",headers=headers)
res.encoding=("utf-8")
html = res.text
soup = BeautifulSoup(html, 'html.parser')
tags = soup.find_all('div',class_="sons")
for tag in tags:
  print(tag.find_all('p')[0].text)   
  print(tag.find_all('p')[2].text.replace("...",""))         

 


e:\pytest>python ex23.py

  关雎
关关雎鸠,在河之洲。窈窕淑女,君子好逑。
参差荇菜,左右流之。窈窕淑女,寤寐求之。
求之不得,寤寐思服。悠哉悠哉,辗转反侧。
参差荇菜,左右采之。窈窕淑女,琴瑟友之。
参差荇菜,左右芼之。窈窕淑女,钟鼓乐之

  葛覃
葛之覃兮,施于中谷,维叶萋萋。黄鸟于飞,集于灌木,其鸣喈喈。
葛之覃兮,施于中谷,维叶莫莫。是刈是濩,为絺为绤,服之无斁。
言告师氏,言告言归。薄污我私,薄浣我衣。害浣害否,归宁父母。

  卷耳
采采卷耳,不盈顷筐。嗟我怀人,置彼周行。
陟彼崔嵬,我马虺隤。我姑酌彼金罍,维以不永怀。
陟彼高冈,我马玄黄。我姑酌彼兕觥,维以不永伤。
陟彼砠矣,我马瘏矣,我仆痡矣,云何吁矣。

  樛木
南有樛木,葛藟累之。乐只君子,福履绥之。
南有樛木,葛藟荒之。乐只君子,福履将之。
南有樛木,葛藟萦之。乐只君子,福履成之。

  螽斯
螽斯羽,诜诜兮。宜尔子孙,振振兮。
螽斯羽,薨薨兮。宜尔子孙。绳绳兮。
螽斯羽,揖揖兮。宜尔子孙,蛰蛰兮。

  桃夭
桃之夭夭,灼灼其华。之子于归,宜其室家。桃之夭夭,有蕡其实。之子于归,宜其家室。桃之夭夭,其叶蓁蓁。之子于归,宜其家人。

  兔罝
肃肃兔罝,椓之丁丁。赳赳武夫,公侯干城。
肃肃兔罝,施于中逵。赳赳武夫,公侯好仇。
肃肃免罝,施于中林。赳赳武夫,公侯腹心。

  芣苡
采采芣苡,薄言采之。采采芣苡,薄言有之。
采采芣苡,薄言掇之。采采芣苡,薄言捋之。
采采芣苡,薄言袺之。采采芣苡,薄言襭之。

  汉广
南有乔木,不可休息。汉有游女,不可求思。汉之广矣,不可泳思。江之永矣,不可方思。
翘翘错薪,言刈其楚。之子于归,言秣其马。汉之广矣,不可泳思。江之永矣,不可方思。
翘翘错薪,言刈其蒌。之子于归。言秣其驹。

  汝坟
遵彼汝坟,伐其条枚。未见君子,惄如调饥。
遵彼汝坟,伐其条肄。既见君子,不我遐弃。
鲂鱼赪尾,王室如毁。虽则如毁,父母孔迩。
#8
LllSong2019-12-27 16:48
回复 7楼 wp231957
谢谢谢谢
1