У меня проблема с urllib2/beautifulSoup. Я пытаюсь прочитать некоторую информацию о наших патентах из Интернета. Чтобы быть точным, мне нужно получить информацию о том, когда приложение было подано. Эта информация содержится в предложении:Получение информации из общедоступного каталога с использованием Python и BeautifullSoup
Эта заявка претендует на приоритет предварительной заявки США. Многосерийный телефильм № 60/515, 559, поданной 29 октября 2003 г., полное раскрытие которой конкретно включено сюда путем ссылки.
Это предложение не является частью какого-либо конкретного тега, так что я думал, что это может быть хорошо использовать регулярное выражение на весь HTML (пробовал некоторые другие способы, но никто не работал), так что я написал что-то вроде этого (я уже использую BeautifullSoup для получить некоторую другую информацию):
url = "http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=7442851.PN.&OS=PN/7442851&RS=PN/7442851"
request = urllib2.Request(url, headers={'User-Agent' : "Magic Browser"})
patent_data = bs(urllib2.urlopen(request).read())
#1
r = re.compile("[A-Z][a-z]{2}\. \d+, \d\d\d\d")
txt = r.findall(str(patent_data))
print txt
#2
print patent_data
есть две части, чтобы описать проблему:
- Я бег регулярному_выражения и попытаться найти матчи, но в результате переменной TXT является пустым список ...
- Когда я пытаюсь просто распечатать весь html, я вижу, что результат не завершен (он заканчивается
(...)<center><b>Other References</b></center> <tr><td></td></tr></br></table></hr></hr></p></hr>
).
Есть ли какой-либо предел количества данных, которые он может загрузить? Как я могу его преодолеть?
[Ответ на CLJ] Я не использую прокси-сервер сам по себе - но я не знаю, если мой интернет-провайдер имеет что-то или нет ... Что касается кода и информации, вот результат:
print "info: ", r.info();
print "code: ", r.getcode()
output:
info: Server: NetAnswer Server 1.0
Content-Type: text/html
code: 200
еще одно: я использую Python 2.7.5 на Win7 64bit, если это имеет значение ...
Попробуйте увидеть, что на самом деле загрузится, прежде чем передать ответ BeautifulSoup (на всякий случай, если его парсер захлопывает HTML), напечатав ответ напрямую: 'print urllib2.urlopen (request) .read() 'является результатом еще неполным? – clj
Да, он еще неполный. Странно то, что когда я пытаюсь напечатать urllib2.urlopen (request) .read() Я получаю конец ответа, и когда я печатаю patent_data, я начинаю ответ - в обоих случаях результат неполный и не содержит часть Мне нужно. Я также пытался использовать библиотеку запросов вместо urllib2 и иметь ту же проблему ...:/ – Moby04
Это довольно странно! Когда я запускаю свой код (или использую 'curl'), я получаю полное содержимое страницы. Я предполагаю, что все выглядит нормально в вашем браузере? У вас есть какой-либо прокси-сервер или, возможно, прозрачный прокси-сервер, который мешает вашему запросу? Оператор печати # 1 возвращает мне следующее: '['Apr. 21, 2000 ',' Apr. 21, 2000 ',' июль. 19, 2003 ',' окт. 22, 1999 ',' Apr. 20, 2004 ',' ноябрь. 21, 2003 ',' ноябрь. 21, 2003 ',' окт. 29, 2003 ']' ... возможно, посмотрите на заголовок/код состояния 'response = urllib2.urlopen (request); print response.info(); print response.getcode() ' – clj