无法计算beautifulsoup字符串总和

时间:2020-09-11 16:55:59

标签: python beautifulsoup

您好,我想抓取一个网页。我发布了代码,但是我所针对的行很重要。它不起作用。我的意思是没有错误,但也没有输出。我的代码在那里。我需要对字符串求和,这就是问题所在。

import requests
from bs4 import BeautifulSoup
import pandas as pd

url='http://www.sis.itu.edu.tr/tr/ders_programlari/LSprogramlar/prg.php'
html_content = requests.get(url).text
soup = BeautifulSoup(html_content, "lxml")

url_course_main='http://www.sis.itu.edu.tr/tr/ders_programlari/LSprogramlar/prg.php?fb='


url_course=url_course_main+soup.find_all('option')[1].get_text()    <---this line
html_content_course=requests.get(a).text
soup_course=BeautifulSoup(html_content_course,'lxml')
for j in soup_course.find_all('td'):
    print(j.get_text())

当我将显示的行更改为

url_course=url_course_main+'AKM'

有效。

soup.find_all('option')[1].get_text()也等于AKM。 你能猜出错误在哪里吗?

2 个答案:

答案 0 :(得分:2)

尝试使用Python的标准requests代替urllib.request模块。似乎requests模块无法打开页面:

import urllib.request
from bs4 import BeautifulSoup


url='http://www.sis.itu.edu.tr/tr/ders_programlari/LSprogramlar/prg.php'
html_content = urllib.request.urlopen(url).read()
soup = BeautifulSoup(html_content, "lxml")
url_course_main='http://www.sis.itu.edu.tr/tr/ders_programlari/LSprogramlar/prg.php?fb='
url_course=url_course_main+soup.find_all('option')[1].get_text()
html_content_course=urllib.request.urlopen(url_course).read()
soup_course=BeautifulSoup(html_content_course,'lxml')

for j in soup_course.find_all('td'):
    print(j.get_text(strip=True))

打印:

2019-2020 Yaz Dönemi AKM Kodlu Derslerin Ders Programı 

...

答案 1 :(得分:1)

问题是get_text()'AKM '的末尾提供了空格,而requests在URL中发送了该空格-服务器无法找到有空格的文件'AKM '。 / p>

我在字符串><中使用了'>{}<'.format(param)来显示此空间->AKM <-因为没有><似乎没问题。

代码需要get_text(strip=True)get_text().strip()才能删除此空间。


import requests
from bs4 import BeautifulSoup

url = 'http://www.sis.itu.edu.tr/tr/ders_programlari/LSprogramlar/prg.php'
html_content = requests.get(url).text

soup = BeautifulSoup(html_content, 'lxml')

url_course_main = 'http://www.sis.itu.edu.tr/tr/ders_programlari/LSprogramlar/prg.php?fb='

param = soup.find_all('option')[1].get_text() 
print('>{}<'.format(param))   # I use `> <` to show spaces

param = soup.find_all('option')[1].get_text(strip=True)
print('>{}<'.format(param))   # I use `> <` to show spaces

url_course = url_course_main + param

html_content_course = requests.get(url_course).text

soup_course = BeautifulSoup(html_content_course, 'lxml')
for j in soup_course.find_all('td'):
    print(j.get_text())
相关问题